13

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

谢谢

4

3 回答 3

14

现在您在 OpenCV 中拥有了由 Vadim Pisarevsky 创建的用于轮廓面的新 LBP 级联:

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

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

于 2013-02-20T04:15:35.800 回答
10

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

在这种情况下,您可能需要做的是训练 OpenCV 识别您感兴趣的对象,在这种情况是“半张脸开始训练的起点。

一旦您使用您的数据(例如,半张脸的许多不同图像)训练了 OpenCV,您将准备好一个 XML 级联文件,您可以将其插入您自己的代码以检测半张脸。

祝你好运!

于 2012-01-10T05:57:04.173 回答
2

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

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

虽然如果你想坚持使用 OpenCV,那么 OpenCV 中已经添加了一个新的人脸检测深度学习模型。结果不如 Multi Task CNN。在 pyimagesearch链接上有一个用于人脸检测的 OpenCV 深度学习模型的实现

于 2018-06-14T15:28:26.850 回答