有没有办法在使用OpenCV使用haar face检测时获得置信水平的测量?

时间:2012-05-10 08:17:40

标签: opencv face-detection face-recognition

我开发了一个使用OpenCVs HAAR级联人脸检测进行人脸检测的应用程序。该算法工作正常,但每隔一段时间它就能找到墙上的图案或不是面孔的东西 我想对怀疑为面孔的对象运行额外的检查,但我只想对那些我并不知道它们是面孔的对象进行检查。有没有办法获得HAAR级联人脸检测检测到的人脸“置信度”?

4 个答案:

答案 0 :(得分:6)

OpenCV通过类CascadeClassifier中函数“detectMultiScale”中的参数“weights”提供置信度,需要将标志“outputRejectLevels”置为true

答案 1 :(得分:3)

OpenCV实际上为任何特定对象找到了多个结果,每个检测到的区域在很大程度上相互重叠;然后将它们组合在一起并形成“邻居数量”计数。这个数字就是所谓的信心。

执行对象检测时,其中一个参数是返回命中之前的最小邻居。增加它可以减少误报,但也会减少可能检测到的面部数量。

答案 2 :(得分:1)

为什么不针对同一图像运行多个haar级联(以不同方式训练)并查看它们是否产生类似的结果?让它们投票,就像它一样。因此,如果只有一个级联找到了一个给定的面部,而其他的没有,那么这会让你对那个给定的面孔没那么自信。

我能够在iPhone视频源上实时同时运行3个级联,因此在许多正常情况下,性能不应成为问题。更多信息: http://rwoodley.org/?p=417

答案 3 :(得分:0)

不能直接回答您的问题,但这可能有助于减少错误检测。

通过调整MinNeibhbours,CV_HAAR_FIND_BIGGEST_OBJECT和Size值,可以减少错误检测。

int MinNeighbours = 7;

face_cascade.detectMultiScale(frame_gray,faces,1.1,MinNeighbours,CV_HAAR_FIND_BIGGEST_OBJECT,Size(60,60));