Python, Pillowで画像をネガポジ反転(画素値を逆転)
Pythonの画像処理ライブラリPillow(PIL)のImageOps
モジュールに、画像をネガポジ反転(画素値を逆転)する関数invert()
が用意されている。
ImageChops
モジュールにも同様の関数がある。
処理の中身は単純で、各画素の値を最大値(8ビットの場合は255)から引いた値に置き換えているだけ。例えば、0は255、64は191、255は0となる。
Pillow(PIL)のインストール、基本的な使い方などは以下の記事参照。
OpenCVなどでNumPy配列ndarray
として画像を読み込んだ場合のネガポジ反転は以下の記事の処理例を参照。
コード例
画像を読み込みinvert()
を呼ぶだけ。
from PIL import Image, ImageOps
im = Image.open('data/src/lena.jpg')
im_invert = ImageOps.invert(im)
im_invert.save('data/dst/lena_invert.jpg', quality=95)
source: pillow_invert.py
透過pngをopen()
で読み込むとmode
がRGBA
となり正しく処理されないので、convert()
でRGB
に変換する。
most operators only work on L and RGB images.
ImageOps Module — Pillow (PIL Fork) 4.4.0.dev0 documentation
im = Image.open('data/src/horse.png').convert('RGB')
im_invert = ImageOps.invert(im)
im_invert.save('data/dst/horse_invert.png')
source: pillow_invert.py