Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

コラージュ写真を作る

白バックの人物写真から人物を切り抜いて風景写真に張り付けます。人物写真を白黒変換し変換した画像をマスクにして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
f:id:T_A_T:20211010071658j:plain

easter.jpg
f:id:T_A_T:20211010071715j:plain

コード

男性の写真を二値化してマスク画像にして、そのマスク画像の白の部分に背景を黒の部分に男性を当てはめて合成します。二値化には.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')
実行結果

男性がイースター島の画像に合成されました。
f:id:T_A_T:20211010071851j:plain


コード

イースター島の画像のみぼかしてポートレートっぽくします。

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')
実行結果

f:id:T_A_T:20211010072145j:plain

以下のサイトを参考にさせていただきました

GeeksforGeeks >> Python PIL | Image.point() method

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村