分类器对opencv人脸检测器的信心

时间:2011-10-30 21:42:38

标签: python opencv machine-learning computer-vision face-detection

我在python中使用opencv的har cascade face detector(cv.HaarDetectObjects)。

例如:

    faces = cv.HaarDetectObjects(grayscale, cascade, storage, 1.2, 2,
    cv.CV_HAAR_DO_CANNY_PRUNING, (50,50))

       for f in faces:
           print(f)

这将打印此表单中的检测列表:

 ((174, 54, 114, 114), 53)
 ((22, 51, 121, 121), 36)
 ((321, 56, 114, 114), 21)
 ((173, 263, 125, 125), 51)
 ((323, 272, 114, 114), 20)
 ((26, 271, 121, 121), 36)

每条线代表一次检测。前4个数字是左上角的x,y位置,以及边界框的高度和宽度。最后一个数字是(引用openCV文档)邻居的数量。

我想我有两个问题:

1)最后一个数字是什么意思?谷歌搜索时我找不到任何参考。

2)(更重要)有没有办法获得每次检测的置信度分数?面部分类器确定检测对应真实面部多少钱?

由于

2 个答案:

答案 0 :(得分:7)

1)检测代码为对象产生一次以上的检测 - 例如然后对检测进行分组,并且这样的组中的邻居数量是返回的数量。另见Viola Jones论文,第5.6段(http://research.microsoft.com/en-us/um/people/viola/Pubs/Detect/violaJones_IJCV.pdf)和OpenCV来源。

2)你可以使用邻居的数量作为一定程度的信心。

答案 1 :(得分:0)

非常感谢您提出的问题和答案,我一直在寻找具有一天信心分数的opencv人脸检测。你的问题和答案给了我一些解决问题的指导。

就像Palmstrom所说,最后一个数字表示该群集中对象位置的数量。你可以用它作为置信度分数。

据我所知,旧的python API中只有这种API。新API没有此值(群集中的对象数)值。

我把我的代码放在这里以防万一它会帮助其他人。这是一个旧的python API,很难找到它的教程。

<package-name>