我正在尝试使用 opencv 来检测人脸。脸部不是正面的,相机从侧面捕捉脸部,因此只能看到一只眼睛和嘴巴的一部分。我尝试了具有多种配置的 HaarDetectObjects 却没有得到好处。我更改了级联并进行了测试:haarcascade_frontalface_default.xml、haarcascade_frontalface_alt.xml、haarcascade_profileface.xml 结果非常糟糕。还有其他更好的级联吗?还有其他建议吗?
谢谢
我正在尝试使用 opencv 来检测人脸。脸部不是正面的,相机从侧面捕捉脸部,因此只能看到一只眼睛和嘴巴的一部分。我尝试了具有多种配置的 HaarDetectObjects 却没有得到好处。我更改了级联并进行了测试:haarcascade_frontalface_default.xml、haarcascade_frontalface_alt.xml、haarcascade_profileface.xml 结果非常糟糕。还有其他更好的级联吗?还有其他建议吗?
谢谢
现在您在 OpenCV 中拥有了由 Vadim Pisarevsky 创建的用于轮廓面的新 LBP 级联:
https://github.com/Itseez/opencv/blob/master/data/lbpcascades/lbpcascade_profileface.xml
显然,它只检测正确的侧面,因此要检测所有侧面,必须在翻转图像的情况下运行第二步。
您引用的级联文件(例如 aarcascade_frontalface_default.xml、haarcascade_frontalface_alt.xml、haarcascade_profileface.xml)是使用完整的正面创建的,以检测完整的正面。所以,半张脸显然不会被计算机正确识别为正确的形状。
在这种情况下,您可能需要做的是训练 OpenCV 识别您感兴趣的对象,在这种情况下,它是“半张脸开始训练的起点。
一旦您使用您的数据(例如,半张脸的许多不同图像)训练了 OpenCV,您将准备好一个 XML 级联文件,您可以将其插入您自己的代码以检测半张脸。
祝你好运!
我一直在处理非正面图像的人脸检测问题。尝试使用多任务 CNN。这是人脸检测和对齐的最佳解决方案。它能够处理各种姿势、光照、遮挡等问题。
该论文可在Link获得。该代码可在 GitHub 上的Link上找到。我使用了python实现,结果非常出色。虽然如果图像有很多面孔,代码会有点慢。
虽然如果你想坚持使用 OpenCV,那么 OpenCV 中已经添加了一个新的人脸检测深度学习模型。结果不如 Multi Task CNN。在 pyimagesearch链接上有一个用于人脸检测的 OpenCV 深度学习模型的实现