5

项目:人脸检测人脸检测和裁剪

说明:我想检测和图像作物脸。通过网络摄像头捕获图像,每个图像只有一个脸部。我使用OpenCV脸部检测器,但我对裁剪不满意。因此,我开始使用STASM(http://www.milbo.users.sonic.net/stasm/)人脸标志检测器裁剪图像.STASM使用OpenCV人脸检测器在图像中查找人脸,STASM在人脸中定位标志。在光线不好的情况下,STASM的裁剪图像不好,因为它不能单独检测脸部。

1)我想知道任何更好的人脸检测算法。我的主要目标是从图像中裁剪脸部。

2)目前我正在使用STASM进行裁剪。在光线不好的情况下或在拍摄图像时,如果未拍摄到整个或完整脸部(前额至下巴),则STASM裁剪不可靠(输出将仅为眼睛或嘴唇)。并且在我的应用程序中,如果没有从痉挛中输出正确的图像,或者脸部没有被剪裁,那么我应该拒绝图像。怎么做?所以我打算通过找到眼睛来验证图像中的脸部。如果我的方法正确,如何从裁剪图像中检测眼睛?

+0

裁剪脸部后,您的目标是什么?创建训练集或做脸部识别? –

+0

裁剪后,我用它来创建一个良好的面部识别训练集。 谢谢你的回应... – 2vision2

回答

1

尝试使用来自OpenCV的眼睛检测器。并根据眼睛位置调整脸部框。

3

我在一个项目中使用嵌套级联分类器检测脸部的眼睛,因为它在传递的示例中不合适,所以我获得了相当不错的结果。但后来我使用了一个额外的技巧:我将nestedCascade.detectMultiScale()的minNeighbors参数设置为0.

这意味着您会得到很多结果。一只眼睛可能会被认出。然后我检查结果在脸部左侧和右侧的哪个位置收集。聚集点是实际的眼睛位置。

然后我旋转初始图像。旋转中心是我找到的脸部中心,旋转角度是检测到的眼睛之间的角度。然后我对旋转后的图像进行另一次人脸检测,并确保在nestedCascade.detectMultiScale()的参数中使用了非常低的比例因子。

结果是在大多数情况下一个完美正常化的面部图像。当然,成功还取决于你的闪电条件有多糟糕。