如何在OpenCV 2.4.8中找到最大的脸



我目前正在尝试使用OpenCV 2.4.8进行人脸检测。我正在加载haarcascade分类器:haarcascade_frontalface_alt.xml。我正在使用detectMultiScale函数,参数如下:face_cascade.detectMultiScale(grayscaleFrame, faces, 1.1, 3,CV_HAAR_FIND_BIGGEST_OBJECT)。

问题是它不像它应该做的那样只返回最大的对象。我在调试模式下构建opencv,发现CV_HAAR_FIND_BIGGEST_OBJECT标志在新版本中是冗余的。有没有人能告诉我其他方法来检测一个框架中最大的物体?

为什么不使用surface作为检测face big的标准:

std::vector<cv::Rect> faces;
face_cascade.detectMultiScale(grayscaleFrame, faces, 1.1, 3,CV_HAAR_FIND_BIGGEST_OBJECT).
cv::Rect maxRect; // 0 sized rect
for(int i=0;i<faces.size();i++) 
    if (faces[i].area() > maxRect.area())
        maxRect = faces[i];

它给出了很好的估计,例如当检测到不止一个人时,这种方法在大多数情况下会给出离相机最近的脸。

相关内容

  • 没有找到相关文章

最新更新