![見出し画像](https://assets.st-note.com/production/uploads/images/73586715/rectangle_large_type_2_11960a1e861c65c4c7777e0c712c147b.jpeg?width=1200)
Pythonで塗り絵を作ろう!
こんにちは、アリカです。
本日はPythonを使って塗り絵を作成してみたいと思います :-)
と言っても塗り絵を作成するモジュールがあるわけではなく、流れとしては
画像をグレースケールにする
↓
画像を膨張させる
↓
膨張させた画像と元の画像の差分を取る
↓
白黒を反転させる
といった感じになります。
yolov8という最新の物体検出アルゴリズムを使ってリアルタイムの物体検知を行っています。
画像処理に興味がある方は是非こちらの動画も是非ご確認ください!
テキストVer
①画像をグレースケールにする
今回の画像加工に必要なものをインポートします。
import numpy as np
import cv2
cv2はopencvがインストールされている必要があります。まだインストールしていない方はpipでインストールする必要があります。
pip install opencv-python
※pipのバージョンが低いとインストールができないのでアップグレードする必要があります。
pip install --upgrade pip
インポートが完了したら画像をグレースケールにしていきます。
グレースケールは画像処理を高速化するためによく利用します。(画像処理は枚数が多いとかなりの時間を要します。)今回は無くても良さそうですが、念のためグレースケールにしています。
gray=cv2.imread("./photo.jpg",cv2.IMREAD_GRAYSCALE)
cv2.imwrite("./grayphoto.jpg",gray)
cv2.imwriteは画像を保存しているだけなので必要ない方は省略しても大丈夫です。
またopencvは画像のパスを指定するときに日本語が入っているとうまくいかないので注意してください。
![](https://assets.st-note.com/img/1646454600346-6jWpQluT0q.jpg?width=1200)
②画像を膨張させる
neiborhood24は膨張させる範囲を行列で表してます。
cv2.dilateで先ほどのグレースケール画像を膨張させます。
neiborhood24=np.ones((5,5),dtype=np.uint8)
dilated=cv2.dilate(gray,neiborhood24,iterations=1)
cv2.imwrite("./dilatedphoto.jpg",dilated)
![](https://assets.st-note.com/img/1646454608666-Z7XXwwhiiu.jpg?width=1200)
③膨張させた画像と元の画像の差分を取る
差分を取ることで膨張した部分が白い線で表されます。
diff=cv2.absdiff(dilated,gray)
cv2.imwrite("./diffdphoto.jpg",diff)
![](https://assets.st-note.com/img/1646454625420-vPVu73aOzG.jpg?width=1200)
④白黒を反転させる
最後に白黒を反転をさせて終了です :->
contour=255-diff
cv2.imwrite("./nuriephoto2.jpg",contour)
![](https://assets.st-note.com/img/1646454631960-YzO8vjdtz5.jpg?width=1200)
簡単だったので他にもやってみました♪
![](https://assets.st-note.com/img/1646454639330-KLFrS2RNxb.jpg?width=1200)
![](https://assets.st-note.com/img/1646454657756-0YpPfIppjC.jpg?width=1200)
最後に
本日はここまでとなります。
子供が最近新幹線ブームなので新幹線でやってみました。
気になった方は是非やってみてください。
最後まで読んで頂きありがとうございました。
スキ・フォロー・コメントお待ちしております。
OpenCVを体系的に学びたい方におすすめです。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?