目や鼻や口を認識する

http://sourceforge.net/projects/opencvlibrary/subversionリポジトリに、右目・左目・両目・鼻・口にマッチするhaarcascade.xmlがある


持ってくる

mkdir ~/tmp
cd ~/tmp
svn co https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary opencvlibrary


発見した。ぜんぶコピーしておこう

mkdir ~/haarcascades
cp ~/tmp/opencv-svn/opencvlibrary/trunk/opencv/data/haarcascades/haar*.xml ~/haarcascades


画像を集める

mkdir ~/Pictures/faces
mkdir ~/Pictures/faces/results
cd ~/Pictures/faces

facesにいくつか写真を入れておいた


haartestrubyワンライナーから使ってどんどん変換していく

ruby -e 'Dir.glob("*.jpg").each{|f| puts "--#{f}--"; puts `~/src/cpp/opencv/study/haar/haartest -c ~/haarcascades/haarcascade_mcs_nose.xml -i #{f} -o results/#{f}_haarcascade_mcs_nose.jpg`}'


できた写真をいくつかアップした
http://www.flickr.com/photos/shokai/tags/opencvtest090731

  • どうやら目や口だけで認識させるのは精度が悪い。自然の中に目に見える木のフシがたくさんあるように、単体では無理らしい。
  • righteyeはそれなりだけど、lefteyeは誤認識しまくってた
  • 口も、横に2本太い線が走ってる場所に誤認識しまくってる
  • 顔を認識してから、その中の位置と合わせてやった方が良いようだ


左目を認識。成功。
shokai-blue.jpg_haarcascade_mcs_lefteye


右目だけのはずが両目を認識した
shokai-blue.jpg_haarcascade_mcs_righteye


口だけを認識するはずが
emushi-2face.jpg_haarcascade_mcs_mouth


同じく口認識。多すぎる
delta-air.jpg_haarcascade_mcs_mouth


口大杉
emushi-grass.jpg_haarcascade_mcs_mouth



shokai-umbrella.jpg_haarcascade_mcs_mouth


鼻認識。うまく鼻だけになった例
shokai-blue.jpg_haarcascade_mcs_nose


鼻認識。なぜか左側は鏡写しなのに認識されなかった
emushi-2face.jpg_haarcascade_mcs_nose


目認識
delta-air.jpg_haarcascade_eye


目認識。第三の目だけ認識した
emushi-2face.jpg_haarcascade_eye


目認識成功
masatooo-beer.jpg_haarcascade_eye


目認識。片目だけになった
masatooo-berger.jpg_haarcascade_eye


目。顔が斜めだからか、2つ並んだ水平にある首筋の髪の毛が目と認識された?
masatooo-tel.jpg_haarcascade_eye


左目のみ認識のはずが、多すぎる
emushi-2face.jpg_haarcascade_mcs_lefteye

左目認識
masatooo-berger.jpg_haarcascade_mcs_lefteye


右目のみ認識。両方にマークがついてしまい、関係ない部分も目と認識されてる
delta-air.jpg_haarcascade_mcs_righteye