我正在开发一个用于面部认证的 C++ 应用程序。首先,我必须检测人脸并对图像进行预处理。
- 对于人脸检测,我使用了 HaarCascadeClassifier。问题是这个工具或这个算法给了我一个面部区域,该区域由一个有点大的矩形检测到,该矩形覆盖了头发和一些背景。有没有办法改变这个矩形的尺寸?我使用了“frontalfacecascaadclassifier.xml”。
- 对于人脸预处理,我想像 this technique 一样进行人脸对齐.我将如何做到这一点?
最佳答案
在给定图像中找到眼睛的准确位置绝非易事。用于在 OpenCV 中寻找眼睛的 Haar 级联会产生太多的误报而无用,而且这种方法对图像旋转不具有鲁棒性(虽然它可能会补偿轻微的旋转,但我不知道训练图像)。如果我是你,我会在 http://scholar.google.com 上开始广度优先搜索。该研究领域的相关论文。
您需要可靠的头部姿势估计来对齐人脸图像。我自己做了一些研究,我认为在这里共享算法和代码很有用。我见过的最有趣的方法是:
Gary B. Huang , Vidit Jain , 和 Erik Learned-Miller . 复杂图像的无监督 union 对齐。 计算机视觉国际 session (ICCV),2007。(Project page) , (PDF Online available) , (Source code)
X. Zhu , D. Ramanan . 野外人脸检测、姿势估计和地标定位计算机视觉和模式识别 (CVPR) 普罗维登斯,罗德岛,2012 年 6 月。(Project page) , (PDF Online available) , (Source code)
关于c++ - 如何对齐人脸图像c++ opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10143555/