※このページではアフィリエイト広告を利用しています

【Python応用】「Pillow」の使用方法-概要-

Python

ここでは、Pythonにおける「Pillow」の使用方法について概要をまとめています。

この記事の対象

  • Pillowの使用方法について知りたい方
  • Pythonで画像操作をしたい方
  • 自動化や効率化に興味がある方
スポンサーリンク
スポンサーリンク

「Pillow」とは

https://pillow.readthedocs.io/en/stable/

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」の使用例は以下をご参照下さい。

>>>Pillowを用いた画像のトリミング方法

画像の回転

回転の型

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を用いた画像同士を重ねる方法予め用意した画像同士を重ねる方法について解説しています。
タイトルとURLをコピーしました