我尝试编写一个人脸检测应用程序来熟悉OpenCV for iOS,但Cascade Classifier不起作用。这是代码:
- (void)processImage:(cv::Mat &)image
{
cv::Mat grayImage;
std::vector<cv::Rect> faces;
cv::cvtColor(image, grayImage, CV_BGR2GRAY);
cv::equalizeHist(grayImage, grayImage);
self.faceDetector.detectMultiScale(grayImage, faces);
for (std::vector<cv::Rect>::iterator it = faces.begin(); it != faces.end();
it++)
cv::rectangle(image, *it, cv::Scalar(0,255,0));
}
我已经检查过加载了级联分类器并且图像是非空的。调试器显示即使在调用detectMultiScale之后faces
为空。我正在使用haarcascade_frontalface_default.xml
来加载我的分类器。图片here。
修改
根据lightalchemist和berak的建议,我尝试使用haarcascade_frontalface_alt
和haarcascade_frontalface_alt2
并切换图片,但它不起作用。 faces.isEmpty()
即使在调用detectMultiscale
后也会返回true。
当我尝试为Mac编译它时它完美无缺。这可能是iOS 7 / OpenCV的错误吗?