環境
Windows 7 Home 64bit
OpenCV 2.4.11
Visual Studio 2013
はじめに
顔検出に使用されるCascadeDetectorで猫の正面顔を検出してみた。
OpenCV 2.4系列では、主に人の部位の辞書が提供されていたが、OpenCV 3系列では猫の正面顔の辞書が3種類添付されている。
提供されている猫正面顔の辞書
- haar特徴量 縦横のみ サイズ 24x24 [haarcascade_frontalcatface.xml]
(https://github.com/Itseez/opencv/blob/3.1.0/data/haarcascades/haarcascade_frontalcatface.xml) - haar特徴量 斜めを含む拡張版 サイズ 24x24 haarcascade_frontalcatface_extended.xml
- lbp特徴量 サイズ 24x24 lbpcascade_frontalcatface.xml
辞書は互換性があるので、3の辞書を2で使用することができる
テストコード
OpenCV 2.4.11で提供されている猫の画像を使用し、3種類の辞書による検出結果を比較してみた。
検出時のデフォルトパラメータでは、誤検出が多かったので、若干調整している。
下記のコードは、haarcascade_frontalcatface.xmを使用する検出部のみである。画像の読み込みや、キー処理などは省略している。
std::vector<cv::Rect> faces;
cv::CascadeClassifier cascade;
cascade.load("haarcascade_frontalcatface.xml");
cascade.detectMultiScale(image, faces, 1.1, 4, 0, cv::Size(100, 100));
cv::Mat disp = image.clone();
int size = faces.size();
for (int i = 0; i < size; i++) {
cv::Rect r = faces.at(i);
cv::rectangle(disp, r, cv::Scalar(255, 0, 0), 2);
}
cv::imshow("haarcascade_frontalcatface", disp);
haarcascade_frontalcatface.xm 辞書での検出結果
haarcascade_frontalcatface_extended.xml 辞書での検出結果
lbpcascade_frontalcatface.xml 辞書での検出結果
冒頭の画像である。
感想
人の顔の辞書の検出結果と比較すると誤検出が多いので、パラメータの調整をしないと所望の結果は得られない。


