PythonでOpenCVのしきい値処理を応用して、漫画っぽい強調エフェクトもりもりの画像を作る

▼この記事をSNSでシェアする▼

スポンサーリンク

スポンサーリンク

今回やりたいことはなんなのか

簡単にいうと、こんな感じの漫画の強調画像を作りたい。

OpenCVのしきい値の処理と色空間の変換を使って、今回写真の画像を漫画の強調画像っぽいものを作るスクリプトを描いてみようと思います。

参考にしたサイト

https://algorithm.joho.info/programming/python/opencv-manga-filter-py/

用意するもの

こんな感じの画像

ただ画像を用意するにあたって一応条件があります。

条件

  • 中心に強調したいオブジェクトが存在すること
  • 背景は白い画像を使用すること。
  • 周縁の部分に多少はオブジェクトがあっても問題なし

→周縁全部にオブジェクトがあると、強調のエフェクトがあまり表示されなくなりますが、上の画像のように手だけ写っているのであれば、エフェクトが効果的に映るので問題ないです。

環境構築とかはこちらをご参考に頂けると幸いです。

コード

manga_emp.ipynb

BGRの色空間の画像を、グレースケール(白黒)の画像に変換し、白黒データ(黒0~白255)を5段階に分けて、一定の色を割り当てています。

santaka
漫画の白黒画像って写真ほど細かく色彩表現されていないですよね

注意すべきはしきい値処理5でほとんど白色の部分に強調のエフェクト画像を置き換えることで、すこしでも黒いところに強調のエフェクト画像が覆い被さらないようにしています。

https://github.com/Tonbi00080/color_edit

途中の画像

OpenCVに多少慣れている人なら、コードでなんとなく意味がわかるかと思いますが、

画像がどのように加工されていくのか変遷を追うほうが、OpenCVに慣れているかにかかわらず、わかりやすいかと思います。

cv2.imwriteという記述のところで、加工途中の画像をあえて保存しています。(本来は不要)

各画像名と上のコードを比較すると、加工処理の内容がわかりやすいかと思います。

background.jpg

edge_apple.jpg

輪郭を抽出

th1_apple.jpg

th2_apple.jpg

th3_apple.jpg

th4_apple.jpg

th5_apple.jpg

ほぼ白いところにbackground.jpgを合成する

最終的な加工画像

emp_apple.jpg

th5_apple.jpgとedge_apple.jpgを合成することで、漫画っぽい強調画像の完成です。

あとがき

今回つくったスクリプトは特定の条件で加工がうまくいくとは思うのですが、うまくいかないシチュエーションもあるかと思います。その際は、このスクリプトのしきい値の設定などをいじると良いかと思います。

当然、手元で試したい場合は画像やファイルのパスは、臨機応変に変えてください。

ここで前提としている色空間などの知識やこのスクリプトで使っているメソッドのことは下の記事で紹介しています。

スポンサーリンク


関連記事

▼この記事をSNSでシェアする▼

フォローする

メニュー・主な記事カテゴリ

おすすめ特集!




「ゆとり鳥日記」について
ITを中心に関心の赴くままに好きなように書いていく雑記ブログ!管理人が二人います。
◆フクロウ(ITコンサル)
◆santaka(SE)

詳しいプロフィール
お仕事の依頼・ご要望

ゆとり鳥日記をBTCで応援する