ほぼPython

Not技術ブログBut勉強ブログ 内容には誤りがあることが多いです

Python+OpenCVで顔検出した(山口達也で)

いま、Pythonで顔面の画像分類器を作りたいと思っています。そのためには教師データとなる顔面の画像がたくさん必要です。

 

そこでまず手始めに、ネットから画像をDLしてきて、その画像の顔面部分を切り取って保存までしてくれるプログラムをデモ的に書いてみました。せっかくなので、話題の人でやってみました。

 

1.ネットから画像をDLしてくれる部分

 この部分のコードは完全にここのコピペで作りました。

 

f:id:short_4010:20180425204200j:plain

山口達也さん以外にも含まれていますが、スルーします。 

 

2.顔認識をして顔面を切り取って保存してくれる部分

 

次に、顔認識の部分です。これも、OpenCVを使って、一切頭を使うことなく書くことが出来ました。ほぼここのコピペです。

 

f:id:short_4010:20180425204517j:plain

上手に顔面が切り取られていることがわかります。処理時間短縮のため、グレースケールで出力するようにしましたが、なんか哀愁が漂っていいですね。

 

 おまけ

・ちょっと調べた感じだと、Google API とかを使っても無料でネットから画像を検索して大量に(1000枚とか)保存するというのは現状厳しいみたいです。bing検索で有料プランを使えば出来るみたいです。

 

 ・OpenCVで顔認識をする際、顔面を判定するためのアルゴリズム(評価器)が必要になります。今回はhaarcascade_frontalface_alt2.xmlを使いました。

 

Python+OpenCVで顔検出によれば、上記の評価器を使い、顔面検出のパラーメーターminNeighbors = 3とすると、OpenCVによりデフォルトで用意されている評価器の中ではもっと精度が高く顔面を検出できたそうです。

 

ソース

一応、顔認識して切り取って保存の部分のコードだけ載せておきます。