[ todo ] pillow enhancer version 19

2019/07/01 10:52 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
[ todo ] pillow enhancer
@[TOC](項目)

# クラス化

clas slider_grad(): # グラデスライダーの値の取得と設定だけのクラス
    init
        パラメータの変数リスト設定と初期化
        親とラベルの登録
    setValue()
        ラベルから値をもらってスライダー位置をセット
    mouseMoved

半径をマウスホイールで変更する
円の中心のみ動かせるようにする
(左右同時ドラッグで同時に動く)--> else にしなければいいだけかも?
親のラジオとの連携
 親からラジオの都度メッセをもらってフラグを設定し直す
 それに応じて再描画(メイン画像とグラデ画像の切り替え)
原画をファイルのまま受け取って自分でpixmap作って描画する
```
class mylabel() : # ラベルのサブクラス、グラデの描画とマウスによるパラメータの取得
 def __init__
  使用するself 変数の初期化
 def initdata(*,*,*)
  親のハンドル、原画のファイル名
 def wheelEvent (self, QWheelEvent) : # viewer の書き方を踏襲
 def changeGrad ()   : # ラジオの受け グラデと本体画像の切り替え pixmapが二つ必要
```

本体
 スライダーの値取得とラジオの値取得
 DDで原画取得して左右のラベルに送る

クラス化
 原画取得、グラデQPixmap取得
 パラメータ取得
 描画
 ラジオパラメータ取得


---
# グラデ関係
- 線形グラデ対応

- PyQtでお手軽GUI開発♪―――は可能だったか? 第4回 画面描画編 
http://www7a.biglobe.ne.jp/~thor/novel/column/07.html

```
def paintEvent(self, event):

    canvas = Qg.QPainter(self)                  #画面のPainterを取得する

    #線形グラデーション
    grad = Qg.QLinearGradient(25,0,75,100)      #座標(25,0)~(75,100)間で定義
    grad.setColorAt(0.1, Qg.QColor(Qt.red))     #色の位置の設定
    grad.setColorAt(0.5, Qg.QColor(Qt.green))
    grad.setColorAt(1.0, Qg.QColor(Qt.blue))
    canvas.setBrush(Qg.QBrush(grad))            #画面に描画する
    canvas.drawRect(0,0,100,100)

    #放射状グラデーション
    grad = Qg.QRadialGradient(150,50,50,160,60) #(150,50)を中心、半径50、(160,60)が開始位置
    grad.setColorAt(0.0, Qg.QColor(Qt.white))   #色を指定
    grad.setColorAt(1.0, Qg.QColor(Qt.blue))
    canvas.setBrush(Qg.QBrush(grad))            #画面への描画
    canvas.drawRect(100,0,100,100)

    #円錐形グラデーション
    grad = Qg.QConicalGradient(250, 50, 45)     #座標(250,50)を中心に45度角から開始
    grad.setColorAt(0.0, Qg.QColor(Qt.red))     #色の指定
    grad.setColorAt(0.33, Qg.QColor(Qt.green))
    grad.setColorAt(0.66, Qg.QColor(Qt.blue))
    grad.setColorAt(1.0, Qg.QColor(Qt.red))
    canvas.setBrush(Qg.QBrush(grad))            #画面への描画
    canvas.drawRect(200,0,100,100)
```

----------------

# グラデ マウス実装


----------------
# enhancer usage
```
def init

self.list = [
    [ self.ui.label_* , ImageEnhance.Brightness ] ,
    [ self.ui.label_* , ImageEnhance.Contrast ] ,
    [ self.ui.label_* , ImageEnhance.Color ] ,       # 彩度
    [ self.ui.label_* , ImageEnhance.Sharpness ] ,
]


def *****(self,v):
 for l in self.list:
  if l[0] is self.sender() :
  ******
  break

```


-------
# 画質の調整

- 透明度アルファ付きのRGBに変換
con4 = image1.convert('RGBA')

- 彩度
from PIL import ImageEnhance    #ImageEnhanceのインポート
con5 = ImageEnhance.Color(image1)
con5_image = con5.enhance(0.4)  # 1が基本
<con5_image>

- コントラストを調整
con7 = ImageEnhance.Contrast(image1)
con7_image = con7.enhance(0.5)  # 1が基本
<con7_image>

- 明度
con9 = ImageEnhance.Brightness(image1)
con9_image = con9.enhance(0.5)  # 1が基本
con9_image

- シャープネス
con11 = ImageEnhance.Sharpness(image1)
con11_image = con11.enhance(0.5)
con11_image

----
# pillowについて調べた

- 公式
https://pillow.readthedocs.io/en/5.2.x/index.html

- エフェクトはここがわかりやすいね
Qtへの変換も
https://qiita.com/pashango2/items/145d858eff3c505c100a

- タグ取得はここ
https://qiita.com/Gen6/items/88c69ab3a0666895e7a8

- pil はQt変換を標準でサポートしてるのか??
https://dungeonneko.hatenablog.com/entry/2015/07/19/142034
Qpixmapに直接読み込むのとどっちが速いか試してみよう

- 画像貼り付け
Python, Pillowで画像に別の画像を貼り付けるpaste
https://note.nkmk.me/python-pillow-paste/
位置指定して小さい画像を貼り付けできる

- PIL.Image と PyQt4.QtGui.QImageの相互変換 
http://doloopwhile.hatenablog.com/entry/20100305/1267782841
グラデ画像は逆変換になるな

----
# 他のモジュールも

UsefulModules
https://wiki.python.org/moin/UsefulModules#Audio_.2F_Music

https://pypi.org/project/musicplayer/
https://pypi.org/project/musicplayer/

OpenCVでガンマ補正を行ってみる
https://newtechnologylifestyle.net/opnecvでガンマ補正を行ってみる/
OpenCVを使った画像処理
http://labs.eecs.tottori-

u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_table_of_contents_imgproc/py_table_of_contents_img

proc.html

skimage
https://qiita.com/taka_baya/items/453e429b466ffaa702c9

----
→ [目次に戻る](https://mimemo.io/m/QORbW4qkvOoda0N)

      

項目クラス化グラデ関係グラデ マウス実装enhancer usage画質の調整pillowについて調べた他のモジュールも

クラス化

clas slider_grad(): # グラデスライダーの値の取得と設定だけのクラス
init
パラメータの変数リスト設定と初期化
親とラベルの登録
setValue()
ラベルから値をもらってスライダー位置をセット
mouseMoved

半径をマウスホイールで変更する
円の中心のみ動かせるようにする
(左右同時ドラッグで同時に動く)--> else にしなければいいだけかも?
親のラジオとの連携
 親からラジオの都度メッセをもらってフラグを設定し直す
 それに応じて再描画(メイン画像とグラデ画像の切り替え)
原画をファイルのまま受け取って自分でpixmap作って描画する

class mylabel() : # ラベルのサブクラス、グラデの描画とマウスによるパラメータの取得
 def __init__
  使用するself 変数の初期化
 def initdata(*,*,*)
  親のハンドル、原画のファイル名
 def wheelEvent (self, QWheelEvent) : # viewer の書き方を踏襲
 def changeGrad ()   : # ラジオの受け グラデと本体画像の切り替え pixmapが二つ必要

本体
 スライダーの値取得とラジオの値取得
 DDで原画取得して左右のラベルに送る

クラス化
 原画取得、グラデQPixmap取得
 パラメータ取得
 描画
 ラジオパラメータ取得


グラデ関係

def paintEvent(self, event):

    canvas = Qg.QPainter(self)                  #画面のPainterを取得する

    #線形グラデーション
    grad = Qg.QLinearGradient(25,0,75,100)      #座標(25,0)~(75,100)間で定義
    grad.setColorAt(0.1, Qg.QColor(Qt.red))     #色の位置の設定
    grad.setColorAt(0.5, Qg.QColor(Qt.green))
    grad.setColorAt(1.0, Qg.QColor(Qt.blue))
    canvas.setBrush(Qg.QBrush(grad))            #画面に描画する
    canvas.drawRect(0,0,100,100)

    #放射状グラデーション
    grad = Qg.QRadialGradient(150,50,50,160,60) #(150,50)を中心、半径50、(160,60)が開始位置
    grad.setColorAt(0.0, Qg.QColor(Qt.white))   #色を指定
    grad.setColorAt(1.0, Qg.QColor(Qt.blue))
    canvas.setBrush(Qg.QBrush(grad))            #画面への描画
    canvas.drawRect(100,0,100,100)

    #円錐形グラデーション
    grad = Qg.QConicalGradient(250, 50, 45)     #座標(250,50)を中心に45度角から開始
    grad.setColorAt(0.0, Qg.QColor(Qt.red))     #色の指定
    grad.setColorAt(0.33, Qg.QColor(Qt.green))
    grad.setColorAt(0.66, Qg.QColor(Qt.blue))
    grad.setColorAt(1.0, Qg.QColor(Qt.red))
    canvas.setBrush(Qg.QBrush(grad))            #画面への描画
    canvas.drawRect(200,0,100,100)

グラデ マウス実装


enhancer usage

def init

self.list = [
    [ self.ui.label_* , ImageEnhance.Brightness ] ,
    [ self.ui.label_* , ImageEnhance.Contrast ] ,
    [ self.ui.label_* , ImageEnhance.Color ] ,       # 彩度
    [ self.ui.label_* , ImageEnhance.Sharpness ] ,
]


def *****(self,v):
 for l in self.list:
  if l[0] is self.sender() :
  ******
  break


画質の調整

  • 透明度アルファ付きのRGBに変換
    con4 = image1.convert('RGBA')

  • 彩度
    from PIL import ImageEnhance #ImageEnhanceのインポート
    con5 = ImageEnhance.Color(image1)
    con5_image = con5.enhance(0.4) # 1が基本
    <con5_image>

  • コントラストを調整
    con7 = ImageEnhance.Contrast(image1)
    con7_image = con7.enhance(0.5) # 1が基本
    <con7_image>

  • 明度
    con9 = ImageEnhance.Brightness(image1)
    con9_image = con9.enhance(0.5) # 1が基本
    con9_image

  • シャープネス
    con11 = ImageEnhance.Sharpness(image1)
    con11_image = con11.enhance(0.5)
    con11_image


pillowについて調べた


他のモジュールも

UsefulModules
https://wiki.python.org/moin/UsefulModules#Audio_.2F_Music

https://pypi.org/project/musicplayer/
https://pypi.org/project/musicplayer/

OpenCVでガンマ補正を行ってみる
https://newtechnologylifestyle.net/opnecvでガンマ補正を行ってみる/
OpenCVを使った画像処理
http://labs.eecs.tottori-

u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_table_of_contents_imgproc/py_table_of_contents_img

proc.html

skimage
https://qiita.com/taka_baya/items/453e429b466ffaa702c9


→ 目次に戻る