おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【C# 画像処理】OpenCVライブラリで顔認識を作ってみる!

f:id:bookreadkun:20190604160602p:plain

 

おはようございます。おーみんです。

 

 

 

OpenCVを用いて顔認識機能を作る!

以下に環境、コードの説明、そして参考文献を記載します。

 

環境

 

コードの説明

※EmguCVに関する環境構築は既に完了しているのを前提としています。

【環境構築】EmguCVのセット方法 - おーみんだよ。

 

まずはEmguCVが使えるように名前空間をいれます(赤枠)。

f:id:bookreadkun:20190604164202p:plain

 

 

続いてOpenToolStripMenuItem_Click関数について。

こちらは顔認識する写真を選ぶボタンになっています(クリックしたら写真一覧が出る)。

 

30行目~34行目にて選択した写真をフォーム上に載せます。

f:id:bookreadkun:20190604164214p:plain

 

 

次にDetectFaceToolStripMenuItem_Click関数について。

こちらは写真を掲載後に顔を探知する内容になっています。

 

50行目~53行目では先述したOpenToolStripMenuItem_Click部分で写真が掲載されていない場合にエラー処理が発生する仕組みになっています(まあ写真が選択されていなかったらそりゃ顔認識なんて出来ないですからねw)。

 

顔写真があった際に後述するDetectFaceHaar関数を実行します。

f:id:bookreadkun:20190604164225p:plain

 

それではDetectFaceHaar関数について。

67行目は顔を認識するファイル(haarcascade_frontalface_default.xml)のパスを指定しています。

70行目と71行目では画像を多数コピーし(クローン画像)、様々な箇所を括りだして「顔なのかどうか?」を判定しまくっています(という風に解釈したのですが、間違っていたらごめんなさい(;´∀`)

 

72行目~75行目にて、実際に括りだした部分を四角で囲みます。

f:id:bookreadkun:20190604164236p:plain


という感じです。

 

参考文献

今回顔認識を作るにあたり、参考にした動画はこちらになります。

www.youtube.com

 

英語ではありますが、個人的には一番分かりやすかったです。

 

最後に

ということで、ライブラリを用いるとこんなに簡単に顔認識機能を作ることが出来てしまうことに個人的には驚きました。

今後は目の位置や口、鼻など、細かな部分も検出できるようになりたいですね~。