タイトル画像
琴葉茜

さて、今回は画像を加工する「Pillow」について紹介するよ!

解説画像1
琴葉葵

あれ?画像編集は「OpenCV」じゃないの??

琴葉茜

そうだね!「OpenCV」も「Pillow」も画像関連のライブラリだよ

琴葉葵

じゃあなんで同じようなライブラリを紹介するの?

琴葉茜

「Pillow」が「OpenCV」よりも良いのは「軽量」ってことだね
「OpenCV」は色々なことが出来る反面、ライブラリを導入するとソフト全体の容量が大きくなってしまうデメリットがあるんだよ

琴葉葵

ってことは、ちょっと画像を表示したいだけとか簡単な事しかしないプログラムの場合に良いんだね!

琴葉茜

そゆこと
ちなみにOpenCVと違う点は、描画をする時に「draw = ImageDraw.Draw(img)」で画像の上に描画用のレイヤーを重ねるような感じで扱うところだよ

解説画像2
琴葉葵

ほうほう

琴葉茜

この仕組みのおかげで、例えば2枚の画像を合成するってことも出来るよ!

解説画像3
琴葉葵

これ出来るの地味にすごいかも...!!

琴葉茜

Pillowは軽量といっても編集できることはたくさんあるから、最後によく使う機能の一覧を出しておくね

構文機能
Image.open(パス)画像を開くimg = Image.open("image.jpg")
img.save(パス)画像を保存するimg.save("output.png")
img.resize((幅, 高さ))画像をリサイズするimg.resize((100, 100))
img.crop((左, 上, 右, 下))画像をトリミングするimg.crop((10, 10, 200, 200))
img.rotate(角度)画像を回転するimg.rotate(90)
img.transpose(方式)反転(左右・上下)img.transpose(Image.FLIP_LEFT_RIGHT)
img.convert("L")グレースケールに変換img.convert("L")
Image.blend(img1, img2, alpha)2枚の画像をブレンド合成Image.blend(img1, img2, 0.5)
ImageEnhance.Brightness(img)明るさを調整ImageEnhance.Brightness(img).enhance(1.5)
ImageEnhance.Color(img)色の鮮やかさを調整ImageEnhance.Color(img).enhance(2.0)
← 横にスクロールして確認しよう! →
構文機能
ImageDraw.Draw(img)描画用のオブジェクトを作成draw = ImageDraw.Draw(img)
draw.text((x, y), 文字, fill=色)文字を書き込むdraw.text((10, 10), "Hello", fill="black")
draw.rectangle((左, 上, 右, 下), ...)四角形を描くdraw.rectangle((10, 10, 100, 100), outline="red")
draw.line([点のリスト], fill=色, width=太さ)直線を描くdraw.line([(0, 0), (100, 100)], fill="blue", width=3)
draw.ellipse((左, 上, 右, 下), ...)円や楕円を描くdraw.ellipse((50, 50, 150, 150), outline="green")
draw.polygon([点のリスト], ...)多角形を描くdraw.polygon([(100, 100), (120, 140), (80, 140)], fill="yellow")
← 横にスクロールして確認しよう! →