Pillowの画像処理と仲良くなる
画像処理のニューラルネットを使うのに、画像の変換に慣れておらず困ったのでPillowの使い方を調べました。
この時、データセットの作成に必要そうな操作をまとめました。
インストール、準備
pipで普通に入ります。
pip3 install pillow
pythonで使う時はPILから読み込みます。
from PIL import Image
画像はなんでもいいですが、お馴染みLenaさんを用意しておきます。
読み込み・表示・セーブ
#読み込み im = Image.open("./lena.jpg") #表示 im.show() #保存 im.save("./lena2.jpg", "JPEG")
回転、反転
#回転 out = im.transpose(Image.ROTATE_90) out = im.transpose(Image.ROTATE_180) out = im.transpose(Image.ROTATE_270) out = im.rotate(45) #反転 out = im.transpose(Image.FLIP_LEFT_RIGHT) out = im.transpose(Image.FLIP_TOP_BOTTOM)
90度回転させた結果。
45度回転させた結果。
反転させた結果。
リサイズ・crop
#リサイズ out = im.resize((128, 128)) #crop box = (100, 100, 400, 400) out = im.crop(box)
cropした結果。
グレースケール
#グレースケール im.convert("L")
グレースケールした結果。
numpy配列への変換
モデルに突っ込むためにはnumpy配列にしたい。これはnp.array()を使うと簡単に可能です。
out_nparray = np.array(im) out_nparray.shape #(520, 520, 3) out_nparray.transpose(2, 0, 1) #(3, 520, 520) out_nparray.dtype #dtype('uint8')
参考
Pillow公式チュートリアル
pillow.readthedocs.io
画像のLenaさんについて
ja.wikipedia.org
Pillowの画像をNumpy配列に変換する
note.nkmk.me