【问题标题】:How to find biggest face in OpenCV 2.4.8?如何在 OpenCV 2.4.8 中找到最大的脸?
【发布时间】:2014-05-03 01:36:48
【问题描述】:

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

【问题讨论】:

    标签: opencv face-detection


    【解决方案1】:

    为什么不使用表面来衡量检测到的脸有多大:

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

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

    【讨论】:

    • 这很好。我想知道的是有没有办法在不使用表面作为度量的情况下找到最大的物体?当您加载 OpenCV 2.4.8 附带的新分类器时,标志 CV_HAAR_FIND_BIGGEST_OBJECT 不起作用
    猜你喜欢
    • 2014-03-16
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2014-04-16
    相关资源
    最近更新 更多