5

项目:人脸检测

描述:我想检测并裁剪图像中的人脸。图像是通过网络摄像头捕获的,每张图像只有一张脸。我使用了 OpenCV 人脸检测器,但我对裁剪不满意。因此,我开始使用 STASM (http://www.milbo.users.sonic.net/stasm/) 人脸界标检测器来裁剪图像。STASM 使用 OpenCV 人脸检测器在图像中查找人脸,而 STASM 在人脸中定位地标。在光线不好的情况下,来自 STASM 的裁剪图像效果不佳,因为它不能单独准确地检测面部。

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

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

4

2 回答 2

3

通过使用嵌套级联分类器检测脸部的眼睛,我在我的一个项目中取得了相当不错的结果,就像在交付的示例中一样。但后来我使用了一个额外的技巧:我将 nestedCascade.detectMultiScale() 的 minNeighbors 参数调低为 0。

这意味着你会得到很多结果。可能会多次识别出一只眼睛。然后我检查结果集中在脸部左侧和右侧的位置。聚集点是实际的眼睛位置。

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

在大多数情况下,结果是完美归一化的面部图像。当然,成功仍然取决于您的闪电条件到底有多糟糕。

于 2013-01-22T04:09:45.693 回答
1

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

于 2012-12-22T00:57:41.993 回答