融合多个哈尔分类器进行人脸检测

时间:2014-07-08 11:32:18

标签: c++ opencv image-processing computer-vision haar-classifier

我正在尝试将视频细分为前景和背景。假设我的视频主要是面部,我首先使用面部检测器并使用面部检测器内的所有像素作为GrabCut的可能前景种子。

问题在于,有时(在几帧中),面部检测器不会检测到面部,尽管面部肯定存在。特别是当用户远离屏幕并且可以看到面部的侧面轮廓时。

有解决方案吗?

我想到的一个明显的答案是使用侧面轮廓Haar分类器,但我如何融合它们?从某种意义上说,在任何时候我应该具有面部或侧面轮廓的正面轮廓(或者根本没有)。

我想知道检测到的面部是否存在任何类型的相关置信度值,因此我可以使用级联检测来提供更自信的检测。

1 个答案:

答案 0 :(得分:0)

CascadeClassifier :: detectMultiScale()有一个(未记录的)重载:

virtual void detectMultiScale( InputArray image,
                               CV_OUT std::vector<Rect>& objects,
                               CV_OUT std::vector<int>& rejectLevels,
                               CV_OUT std::vector<double>& levelWeights,
                               double scaleFactor,
                               int minNeighbors, int flags,
                               Size minSize, Size maxSize,
                               bool outputRejectLevels ) = 0;

rejectLevels应该是您正在寻找的置信度值