【Pillow(PIL)】画像に様々なフィルターをかけてみる[Python]

  • URLをコピーしました!
目次

Pillow(PIL)

前回、Pythonのreモジュールでよく使う関数を紹介しました。

今回はPythonの画像ライブラリであるPillow(PIL)を使って画像に色々なフィルターをかけてみましょう。

今回はこちらの蓮の花の画像を使用します(ファイル名「lotus.png」)。

今回、Pillowのフィルターを使うためには、「Image」と合わせて、「ImageFilter」をインポートします。

from PIL import Image, ImageFilter

そしてImageFilterを使う際には、このようにします。

img.filter(ImageFilter.フィルター名)

それでは始めていきましょう。

エッジ検出:FIND_EDGES

エッジ検出をするには「FIND_EDGES」を用います。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.FIND_EDGES)

filtered.show()

実行結果

オリジナル画像

FIND_EDGES

こんな感じで画像のエッジを取得することができます。

ただ通常エッジ検出ではグレースケール(もしくはモノクロ)なんですが、この画像ではカラーになっています。

そのため、グレースケールにしたい場合は先にグレースケールに変換したのち、エッジ検出を行います。

グレースケールに変更するには「.convert(“L”)」で画像を変換します。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
img_gray = img.convert("L")

filtered = img_gray.filter(ImageFilter.FIND_EDGES)

filtered.show()

実行結果

オリジナル画像

FIND_EDGES

エッジ検出+白黒反転:CONTOUR

フィルターに「CONTOUR」を使用すると、エッジ検出をして、白黒反転させたような画像が得られます。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")

filtered = img.filter(ImageFilter.CONTOUR)

filtered.show()

実行結果

オリジナル画像

COUNTOUR

白黒以外の色はそのまま残るようなので、こちらもグレースケールにしてから「CONTOUR」フィルタをかけるとグレースケールの輪郭が得られます。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
img_gray = img.convert("L")

filtered = img_gray.filter(ImageFilter.CONTOUR)

filtered.show()

実行結果

オリジナル画像

COUNTOUR

ぼかし:BLUR

画像全体にぼかしをいれるには「BLUR」を用います。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.BLUR)

filtered.show()

実行結果

オリジナル画像

BLUR

詳細化:DETAIL

「DETAIL」を使うと、画像がより鮮明になります。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.DETAIL)

filtered.show()

実行結果

オリジナル画像

DETAIL

エッジを際立たせる:EDGE_ENHANCED、EDGE_ENHANCED_MORE

エッジを際立たせるには「EDGE_ENHANCED」を、さらに際立たせるには「EDGE_ENHANCED_MORE」を使います。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.EDGE_ENHANCE)

filtered.show()

実行結果

オリジナル画像

EDGE_ENHANCE

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.EDGE_ENHANCE_MORE)

filtered.show()

実行結果

オリジナル画像

EDGE_ENHANCE_MORE

エンボス:EMBOSS

エンボス加工のように凹凸のように見える画像にするには「EMBOSS」を使います。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.EMBOSS)

filtered.show()

実行結果

オリジナル画像

ENBOSS

シャープにする:SHARPEN

「SHARPEN」を使うと画像をシャープにできます。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.SHARPEN)

filtered.show()

実行結果

オリジナル画像

SHARPEN

なめらかにする:SMOOTH、SMOOTH_MORE

画像をなめらかにするには「SMOOTH」を、さらになめらかにするには「SMOOTH_MORE」を用います。

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.SMOOTH)

filtered.show()

実行結果

オリジナル画像

SMOOTH

from PIL import Image, ImageFilter

img = Image.open("lotus.jpg")
filtered = img.filter(ImageFilter.SMOOTH_MORE)

filtered.show()

実行結果

オリジナル画像

SMOOTH

次回は他の画像処理ライブラリであるOpenCVで画像を読み込んでグレースケールにしてみます。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次