我正在开发一个用于面部身份验证的C++应用程序。首先,我必须检测人脸并对图像进行预处理。
发布于 2012-04-13 23:36:41
难道你不能使用另一个Haar分类器来找到每一只眼睛(眼睛很容易找到),然后假设这个人有两只眼睛,我们定义了一个“水平”的脸,意味着眼睛是水平的。
只需测量两只眼睛之间的角度,并按该角度旋转图像。
angle = atan ( eye1.Y - eye2.Y ) / (eye1.X - eye2.X )
发布于 2012-04-15 14:05:32
在给定的图像中找到眼睛的准确位置绝非易事。在OpenCV中寻找眼睛的Haar级联产生了太多的假阳性而没有用,而且这种方法对图像旋转不是很健壮(它可能会补偿轻微的旋转,但我不知道训练图像)。如果我是你,我会在http://scholar.google.com上进行广度优先搜索,寻找这一研究领域的相关论文。
你需要一个健壮的头部姿势估计来对齐面部图像。我自己做了一些研究,我认为共享算法和代码在这里很有用。我见过的最有趣的方法是:
发布于 2012-12-11 15:05:06
我在Wild项目页面中尝试了以下人脸对齐代码。它工作得很好,不需要检测面部特征点。可以从http://vis-www.cs.umass.edu/faceAlignment/下载C++代码
如果你仍然希望找到人脸关键点,我发现Viola-Jones检测器不是很健壮和准确。我个人推荐使用Flandmark face keypoint检测器:http://cmp.felk.cvut.cz/~uricamic/flandmark/,它更加健壮和准确。C代码可以从上面的站点下载。
https://stackoverflow.com/questions/10143555
复制相似问题