ここでは、Pythonにおける「Pillow」の使用方法について概要をまとめています。
この記事の対象
「Pillow」とは
「Pillow」とはPythonで画像を操作することができる外部ライブラリです。
OpenCVのように高度な画像処理はできないですが、トリミングやリサイズなどを簡単に行うことができます。
「Pillow」 のインストール
「Pillow」は外部ライブラリなのでpipでインストールしておく必要があります。
$ pip install Pillow
「Pillow」を用いた使用例
前提条件として、以下の画像を操作する使用例を示しています。
画像のリサイズ
リサイズの型
Image.resize(size)
「resize()」の基本的な使用方法は引数にサイズを指定するだけです。
使用例
from PIL import Image
im = Image.open("test.png")
#1---リサイズ
re_size = (256, 256)
out = im.resize(re_size)
out.save("test1.png")
元の画像(640×480)から256×256の画像にリサイズするプログラムです。
画像のトリミング
トリミングの型
Image.crop(box=None)
「crop()」の基本的な型は引数に「left,upper,right,lower」をそれぞれ定義するだけです。
使用例
from PIL import Image
im = Image.open("test.png")
#2---crop
out = im.crop((60, 20, 400, 200))
out.save("crop_result.png")
「crop()」の引数にそれぞれ値を指定しています。
詳しい「crop」の使用例は以下をご参照下さい。
画像の回転
回転の型
Image.rotate(angle)
「rotate()」の基本的な型は引数にθを指定するだけです。
使用例
from PIL import Image
im = Image.open("test.png")
#3---回転
thete = 60
out = im.rotate(angle = thete)
out.save("rotate_result.png")
元の画像を60度回転するプログラムです。
ガウシアンノイズの生成
ガウシアンノイズ生成の型
Image.effect_noise(size,sigma)
「effect_noise()」の型は引数に(width,height)とノイズの標準偏差を指定します。
使用例
from PIL import Image
im = Image.open("test.png")
#4---ノイズの生成
size = (256,256)
sigma = 20
out = Image.effect_noise(size,sigma)
out.save("effect_noise_result.png")
サイズを256×256、シグマを20に指定したノイズ画像を生成するプログラムです。
ノイズ画像との合成
合成の型
ImageChops.multiply(image1,image2)
それぞれの画像を合わせるには「 ImageChops.multiply()」を用います。引数にそれぞれの画像を指定します。
使用例
from PIL import Image,ImageChops
#5---ノイズの合成
im = Image.open("test.png").convert("RGB")
size = (640,480)
sigma = 20
out = Image.effect_noise(size,sigma).convert("RGB")
out = ImageChops.multiply(im,out)
out.save("multiply_result.png")
「 ImageChops.multiply() 」の注意点は算術的な計算をするためのモジュール(8bit画像(L,RGB)向けの操作になります。よって、それぞれの画像を「convert()」で変換する必要があります。
スクリーンショット
ImageGrab.grabの型
ImageGrab.grab(option)
スクリーンショットは「ImageGrab.grab()」を使用することで簡単にできます。サブ画面を含む全てをスクリーンショットする場合はオプションの「all_screens=True」にするだけです。
使用例
rom PIL import ImageGrab
scsho = ImageGrab.grab(all_screens=True)
scsho.save('screenshot.jpg')
上記のスクリーンショットではサブモニターも含む全てを行っています。
その他pillowを用いた使用例
項目 | 内容 |
Pillowを用いた画像のトリミング方法 | 予め用意した画像をトリミングする方法について解説しています。 |
Pillowを用いた画像同士を重ねる方法 | 予め用意した画像同士を重ねる方法について解説しています。 |