我在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)(更重要)有没有办法获得每次检测的置信度分数?面部分类器确定检测对应真实面部多少钱?
由于
答案 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>