次回より『ヒデログ』とご検索ください

【Python入門】5分で分かるPillow(PIL)画像処理モジュールの使い方

python

Pythonで使用できる画像処理ライブラリPillowのImage関数を紹介します。PillowではOpenCVのような高度な画像処理はできませんが、簡単な処理(サイズ変更、トリミング)はできます。

PillowモジュールのImage関数の使い方

Pillowモジュールの中からImage関数について紹介します。Image関数では画像の読み書きやサイズ変更、画像モードの変更、トリミング等簡単な画像処理が出来ます。

PillowモジュールのImage関数を紹介します。リファレンスが充実しています。

モジュールのインストール

Anacondaの場合はEnviromentsからNot installedを選択してpillowで検索すると出てきます。

# Terminalでインストールする場合
# Anaconda
$ conda install -c anaconda pillow
# Or
$ pip install pillow

ファイルの読み書き(open,save)

ファイルの読み書きの関数を紹介します。open関数とsave関数を使用します、

  • open:ファイル読み込み
  • save:ファイル書き込み
from PIL import Image
# ファイルの読み込み
img=Image.open("pc.jpg")

# pc_save.jpgというファイル名で保存
img.save("pc_save.jpg")

画像モードの変換(convert)

Image.convert(mode)関数を使用します。
modeには複数あり、こちらから一覧を参照できます。

from PIL import Image
# ファイルの読み込み
img=Image.open("pc.jpg")

#1bitピクセル、白黒
img_1=img.convert("1")
img_1.save("pc_1.png")

#8bitピクセル、白黒
img_L=img.convert("L")
img_L.save("pc_L.png")

#8bitピクセル、0-255カラーバレット
img_Pimg.convert("P")
img_P.save("pc_P.png")
# jpgで保存しようとすると
# OSError: cannot write mode P as JPEG
# となる
実行結果


画像をリサイズ(resize)

画像をリサイズするには、Image.resize関数を使います。引数にはtuple型を指定します。

以下の例では、(320,206)の画像を半分の(160,103)にリサイズしてます。

from PIL import Image
img = Image.open("pc.jpg")

# (160,103)にリサイズ
# resizeはtuple型を引数にする
img_r = img.resize((160,103))
img_r.save('pc_small.jpg')
実行結果

画像をトリミングする(crop)

Image.crop(box=None)boxには左(x)、上(y)、右(x)、下(y)の座標がtuple型で入る

from PIL import Image
img=Image.open("pc.jpg")
img_crop=img.crop((50,60,150,180))
img_crop.save("pc_crop.jpg")
実行結果

画像を回転する(rotate)

from PIL import Image
img=Image.open("pc.jpg")
img_rotate=img.rotate(45)
img_rotate.save("pc_rotate.jpg")
実行結果

Image関数の属性

opencv

from PIL import Image
# ファイルの読み込み
img=Image.open("pc.jpg")
print(img.filename, img.format, img.mode,img.size,img.width,img.height)
>>pc.jpg JPEG RGB (320, 206) 320 206
  • Image.filename:ファイル名を取得
  • Image.format:ファイルのフォーマットを取得
  • Image.mode:ファイルのカラーモードを取得
  • Image.size:ファイルサイズ(幅、高さ)
  • Image.width:ファイルの幅
  • Image.height:ファイルの高さ

まとめ

PillowモジュールのImage関数について紹介しました。簡単な画像処理ならImage関数で出来ます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です