Ont*_*BLW 18 c++ opencv face-recognition face-detection
我正在开发面部认证的C++应用程序.首先,我必须检测面部并预处理图像.
byt*_*ish 18
在给定图像中找到眼睛的准确位置远非微不足道.用于在OpenCV中找到眼睛的Haar级联产生太多的假阳性是有用的,而且这种方法对于图像旋转不会很稳健(它可以补偿轻微的旋转,但我不知道训练图像).如果我是你,我会在http://scholar.google.com上开始广泛搜索该研究领域的相关论文.
您需要一个强大的头部姿势估计来对齐人脸图像.我自己做了一些研究,我认为共享算法和代码在这里很有用.我见过的最有趣的方法是:
Gary B. Huang,Vidit Jain和Erik Learned-Miller.复杂图像的无监督联合对齐.国际计算机视觉会议(ICCV),2007年.(项目页面),(PDF在线提供),(源代码)
X. Zhu,D.Ramanan.野生计算机视觉和模式识别中的人脸检测,姿态估计和地标定位(CVPR)罗德岛普罗维登斯,2012年6月.(项目页面),(PDF在线提供),(源代码)
你不能再使用另一个哈尔分类器找到每只眼睛(眼睛很容易找到),然后假设这个人有两只眼睛,我们定义一个"水平"脸,意思是眼睛是水平的.
只需测量两只眼睛之间的角度,然后按该角度旋转图像即可.
angle = atan ( eye1.Y - eye2.Y ) / (eye1.X - eye2.X )
Run Code Online (Sandbox Code Playgroud)
我尝试了Wild项目页面中Labeled Faces的以下面部对齐代码.它工作得很好,不需要检测面部特征点.C++代码可以从以下网址下载:http://vis-www.cs.umass.edu/faceAlignment/
如果您仍希望找到面部关键点,我发现Viola-Jones探测器不是非常稳健和准确.我个人建议使用Flandmark面部关键点检测器:http://cmp.felk.cvut.cz/~uricamic/flandmark/ ,它更加强大和准确.C代码可以从上面的网站下载.