さて、今回は画像を加工する「Pillow」について紹介するよ!
あれ?画像編集は「OpenCV」じゃないの??
そうだね!「OpenCV」も「Pillow」も画像関連のライブラリだよ
じゃあなんで同じようなライブラリを紹介するの?
「Pillow」が「OpenCV」よりも良いのは「軽量」ってことだね
「OpenCV」は色々なことが出来る反面、ライブラリを導入するとソフト全体の容量が大きくなってしまうデメリットがあるんだよ
ってことは、ちょっと画像を表示したいだけとか簡単な事しかしないプログラムの場合に良いんだね!
そゆこと
ちなみにOpenCVと違う点は、描画をする時に「draw = ImageDraw.Draw(img)」で画像の上に描画用のレイヤーを重ねるような感じで扱うところだよ
ほうほう
この仕組みのおかげで、例えば2枚の画像を合成するってことも出来るよ!
これ出来るの地味にすごいかも...!!
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") |
← 横にスクロールして確認しよう! →
