如何在OpenCV 2.4.8中找到最大的面孔?

时间:2014-03-25 09:45:56

标签: opencv face-detection

我目前正在尝试使用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标志在新版本中是多余的。谁能告诉我其他方法检测框架中的最大物体?

1 个答案:

答案 0 :(得分:3)

为什么不使用表面来衡量检测到的面部大小:

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];

它提供了良好的估计,例如当检测到多个人时,这种方法在大多数情况下会为我们提供最接近相机的脸部。