使用OpenCV进行人脸检测以获得非正面图像

时间:2012-01-10 04:45:53

标签: opencv face-detection

我正在尝试使用opencv来检测面部。面部不是正面,相机从侧面捕捉到面部,因此只能看到一只眼睛和一部分嘴巴。我尝试了多种配置的HaarDetectObjects而没有获益。我改变了级联,我测试了: haarcascade_frontalface_default.xml,haarcascade_frontalface_alt.xml,haarcascade_profileface.xml,结果非常糟糕。还有其他更好的级联吗?还有其他建议吗?

由于

3 个答案:

答案 0 :(得分:14)

现在,您已经在OpenCV中获得了由Vadim Pisarevsky创建的新型LBP级联面板:

https://github.com/Itseez/opencv/blob/master/data/lbpcascades/lbpcascade_profileface.xml

显然,它只检测正确的轮廓面,因此要检测所有轮廓面,必须在图像翻转的情况下运行第二步。

答案 1 :(得分:8)

您引用的级联文件(例如aarcascade_frontalface_default.xml,haarcascade_frontalface_alt.xml,haarcascade_profileface.xml)是使用完整的正面创建的,以检测完整的正面。因此,一半的脸部显然不会被正确识别为计算机的正确形状。

在这种情况下你可能需要做的是训练OpenCV来识别你感兴趣的对象,在这种情况下是“一半的脸。在OpenCV术语中,它被称为 - 'HaarTraining'。 thisthisthis条款作为开始培训的起点。

一旦你使用你的数据训练过OpenCV(例如很多不同的半张脸图像),你就会准备好一个XML级联文件,你可以插入你自己的代码来检测一半的脸。

祝你好运!

答案 2 :(得分:2)

我一直在处理非正面图像的面部检测问题。尝试使用多任务CNN。这是面部检测和对齐的最佳解决方案。它能够处理各种姿势,灯光,遮挡等问题。

该文件可在Link获得。该代码可在Link的GitHub上获得。我使用了python实现,结果非常出色。虽然如果图像有很多面孔,代码有点慢。

虽然如果你想坚持使用OpenCV,那么OpenCV就会增加一个新的人脸检测深度学习模型。结果不如多任务CNN好。在pyimagesearch Link

上实现了用于人脸检测的OpenCV深度学习模型