コラージュ写真を作る
白バックの人物写真から人物を切り抜いて風景写真に張り付けます。人物写真を白黒変換し変換した画像をマスクにしてPillowのImage.compositeにより人物画像と風景画像を合成します。
関連記事
環境
- windows10 home
- jupyter notebook 6.3.0
- Python 3.8.8
- Pillow 8.2.0
準備
画像ファイルはフリー写真素材ぱくたそから2つの画像をダウンロードさせていただき、jupyter notebookファイル(.ipynb)と同じディレクトリに、ファイル名'boy.jpg','easter.jpg'で保存しました。
boy.jpg
easter.jpg
コード
男性の写真を二値化してマスク画像にして、そのマスク画像の白の部分に背景を黒の部分に男性を当てはめて合成します。二値化には.pointメソッドを使います。白い背景部分のみ白にしたいので輝度高めの240を閾値として二値化します。
from PIL import Image im1 = Image.open('easter.jpg') im2 = Image.open('boy.jpg') threshold = 240 mask = im2.point(lambda p: p > threshold and 255).convert('1') im = Image.composite(im1, im2, mask) im.save('collage.jpg')
実行結果
男性がイースター島の画像に合成されました。
コード
from PIL import Image, ImageFilter im1 = Image.open('easter.jpg') im2 = Image.open('boy.jpg') threshold = 240 mask = im2.point(lambda p: p > threshold and 255).convert('1') im = Image.composite(im1.filter(ImageFilter.BLUR), im2, mask) im.save('collage_b.jpg')
実行結果
以下のサイトを参考にさせていただきました
GeeksforGeeks >> Python PIL | Image.point() method