鳥取砂丘に地上絵を描く
鳥取砂丘の空撮画像に猫の地上絵を書きます。猫のイラストからエッジ検出し、エッジをぼかして地上絵の画像を作成、鳥取砂丘の画像と合成します。
使った関数・メソッド
- cv2.imread() : 画像ファイルの読み出し
- cv2.Canny() : Canny法によるエッジ検出
- cv2.cvtColor() : 色空間の変換
- cv2.blur() : 画像をぼかす
- cv2.imwrite() : 画像を保存する
環境
準備
地上絵はいらすとやから入手したこちらの画像を元に作成します。
キャンバスとなる鳥取砂丘は国土地理院の空中写真を元に明るさの調整とトリミングをした画像を用意しjupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
tottori_sakyu.jpg (幅600px高さ600px)
参考:画像の彩度、明度を変える
コード
import cv2 # OpenCVのインポート img1 = cv2.imread('tottori_sakyu.jpg') # 画像の読み出し img2 = cv2.imread('cat_koubakozuwari.png',0) # 画像をグレイスケールで読み出し img2_edges = cv2.Canny(img2,150,30) # エッジ検出 img2_edges_color = cv2.cvtColor(img2_edges, cv2.COLOR_GRAY2BGR) # グレイスケール画像をカラーに変換 img2_edges_color_blur = cv2.blur(img2_edges_color,(5,5)) # ぼかし処理 # img1にimg2の輝度を1/3にして合算 img1[100:466, 100:500, :] = img1[100:466, 100:500, :]+img2_edges_color_blur/3 cv2.imwrite('tottori_naska.jpg',img1) # 画像の保存
実行結果
以下のサイトを参考にさせていただきました
OpenCV-Python Tutorials >> Canny法によるエッジ検出