画像処理ライブラリPillowのImageChops.lighterで2つの画像の比較明合成、ImageChops.darkerで2つの画像の比較暗合成ができる。
Pillow(PIL)を使うためにはインポートが必要。PIL.ImageChopsモジュールは通常以下の形式でインポートされる。
from PIL import ImageChops
また合成する画像 'yellow.png'(幅400ピクセルx高さ300ピクセル)、'purple.png'(幅400ピクセルx高さ300ピクセル) は以下
'yellow.png'
'purple.png'
1. 比較明合成/比較暗合成
ImageChops.lighter、ImageChops.darkerの書式は以下の通り。image1、image2の各画素値を比較して大きい方(lighter)/小さい方(darker)の画素値からなる新しい画像を生成する。比較はチャンネルごと実施される。Imageは8bitグレースケール(Mode'L')、8bitカラー(Mode'RGB')のいずれか。
PIL.ImageChops.lighter(image1, image2) PIL.ImageChops.darker(image1, image2)
例の画像をImageChops.lighterで合成する場合。yellow.pngの画素値は(R, G, B) = (255, 255, 0)、purple.pngの画素値は(R, G, B) = (255, 0, 255)で各チャンネルごとに大きい画素値が採用されるため、生成される画像は(R, G, B) = (255, 255, 255)、つまり白になる。
from PIL import Image, ImageChops image1 = Image.open('yellow.png') image2 = Image.open('purple.png') out = ImageChops.lighter(image1, image2) out.save('lighter.jpg')
例の画像をImageChops.darkerで合成する場合。yellow.pngの画素値は(R, G, B) = (255, 255, 0)、purple.pngの画素値は(R, G, B) = (255, 0, 255)でチャンネルごとに小さい画素値が採用されるため、生成される画像は(R, G, B) = (255, 0, 0)、つまり赤になる。
from PIL import Image, ImageChops image1 = Image.open('yellow.png') image2 = Image.open('purple.png') out = ImageChops.darker(image1, image2) out.save('darker.jpg')
2. リファレンス
Pillow (PIL Fork) > ImageChops (“Channel Operations”) Module > PIL.ImageChops.lighter(image1, image2)
Pillow (PIL Fork) > ImageChops (“Channel Operations”) Module > PIL.ImageChops.darker(image1, image2)
0 件のコメント:
コメントを投稿