静止画と動画に対する顔検出を使ったクソコラ画像生成をPythonで作ってみた

   

最近コラ画像をよく見かけるからOpenCVとPythonを使って適当に作れないかなというのを試してみた。

ソースは GitHub にのっけた。

なにやってるの

基本的には、

1.下地となる画像の顔部分をOpenCVを使って検出する

2.顔検出領域に透過png画像をオーバレイする

簡単そうな内容だと最初は思っていたが、まあいつも通り面倒くさいことが多かった。

参考

お世話になった記事はこの2つ。

python/OpenCVで透過pngをオーバレイする

Python+OpenCVで顔検出とコラ作成

ベースは1つ目の記事で、やりたいことは2つ目の記事に全部書いてあって涙目になった。

2つ目の記事にもあるように1つ目のベースとなった記事で使われているcv2.cv.CV_GRAY2BGRというのがうまく機能しない。

OpenCVのバージョンアップの際にcv2.cv.*がすべて別のものに置き換わったらしい。

こんなのできました

ただ書き写すだけじゃおもしろみも何もなく、せっかくなのでラップトップPCのインカメを使ってリアルタイムに顔検出を行い、透過画像をオーバレイしてみた。

顔検出の精度があまりよろしくないのか少し動くとずれてしまう。

残念なことにマシンパワーかコードの質か言語の特性か、激重になってしまった。()

今後の課題

・png画像にアルファチャンネルがないとエラーでプログラムが落ちる

・動作が激おも

・まれによくクラッシュする

・画像ファイルのリネームが面倒くさい

・アニメ画像に対して顔検出できない

 

基礎知識的なものを身に着けていないのにそれなりのことができているように見えてしまうのはやばいな〜と最近思っている。

おしまい。

 - Python, つくってみた