Pythonでいろいろやってみる

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

鳥取砂丘に地上絵を描く

鳥取砂丘の空撮画像に猫の地上絵を書きます。猫のイラストからエッジ検出し、エッジをぼかして地上絵の画像を作成、鳥取砂丘の画像と合成します。
f:id:T_A_T:20190427191157j:plain

使った関数・メソッド
  • cv2.imread() : 画像ファイルの読み出し
  • cv2.Canny() : Canny法によるエッジ検出
  • cv2.cvtColor() : 色空間の変換
  • cv2.blur() : 画像をぼかす
  • cv2.imwrite() : 画像を保存する
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

地上絵はいらすとやから入手したこちらの画像を元に作成します。
f:id:T_A_T:20190427175339p:plain

キャンバスとなる鳥取砂丘国土地理院の空中写真を元に明るさの調整とトリミングをした画像を用意しjupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
f:id:T_A_T:20190427174827j:plain
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)  # 画像の保存

実行結果

f:id:T_A_T:20190427184452j:plain

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

OpenCV-Python Tutorials >> Canny法によるエッジ検出

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

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