我在 python 中使用 opencv 的 har 级联人脸检测器 (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) (more important)有没有办法得到每次检测的置信度分数?面部分类器在多大程度上确定检测对应于真实面部?
谢谢
最佳答案
1) 检测代码对一个对象产生不止一次检测——例如以不同的比例,稍微移动等。然后将检测分组,并且这样一个组中的邻居数量是返回的数量。另请参阅 Viola Jones 论文第 5.6 段(http://research.microsoft.com/en-us/um/people/viola/Pubs/Detect/violaJones_IJCV.pdf)和 OpenCV 源代码。
2) 您可以使用邻居的数量来衡量置信度。
关于python - 分类器对 opencv 人脸检测器的信心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948055/