6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python+OpenCVでイラスト塗り絵化プログラムの作成

Last updated at Posted at 2021-02-27

はじめに

塗り絵をやりたくなったが、塗り絵を買いにいくのがめんどくさかったので、自分で作ってみた。
画像処理はopencvを利用した。
色鉛筆は100均に買いに行った。

完成物

元画像

FREE.jpg

塗り絵化

free3.jpg

準備

opencvのインストール

コマンドラインに下記コマンドを入力
pip install opencv-python

塗り絵化アルゴリズム

  1. 画像入力
  2. グレースケール化
  3. 膨張処理
  4. 2と3の差分取得
  5. 白黒反転

目的としては、画像のエッジを取得したいだけなので、エッジ抽出フィルタとかを使ってもできるかもしれない。
有名所で言えば、ソーベルフィルタ・ラプラシアンフィルタ・キャニーフィルタなど。
試していないから、気が向いたら今度やってみてもいいかも。

今回は、エッジが強く出過ぎるのを避けるために、エッジフィルタは利用しなかった。
画像を少し膨張させて、元の画像と差分を取ることで、エッジを抽出した。
差分を取ると、エッジが白・ベタ塗りが黒、で出力されるので、最後に白黒反転させて完成。

実際利用したコード

toNurie.py
import numpy as np
import cv2

#1. 画像入力
#2. グレースケール化(グレースケールで入力)
img = cv2.imread('Free.jpg', cv2.IMREAD_GRAYSCALE)

#3. 膨張処理
neiborhood = np.ones((5, 5), dtype=np.uint8)
dilated = cv2.dilate(img, neiborhood24, iterations=1)

#4. 2と3の差分取得
diff = cv2.absdiff(dilated, img)

#5. 白黒反転
result = 255 - diff

#画像出力
cv2.imwrite('output.jpg', result)

終わりに

好きなアニメシーンの塗り絵ができちゃう!

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?