首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何对齐人脸图像c++ opencv

如何对齐人脸图像c++ opencv
EN

Stack Overflow用户
提问于 2012-04-13 23:15:38
回答 9查看 16.9K关注 0票数 18

我正在开发一个用于面部身份验证的C++应用程序。首先,我必须检测人脸并对图像进行预处理。

  1. 用于人脸检测我已经使用了HaarCascadeClassifier。问题是,这个工具或者这个算法给了我一个面部区域,这个区域是由一个稍微大一点的矩形检测出来的,这个矩形包含了头发和一些背景。有没有解决方案来改变这个矩形的尺寸?我使用了"frontalfacecascaadclassifier.xml".
  2. For人脸预处理,我想要像this technique一样做人脸对齐。我该如何实现这一点呢?--
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-04-13 23:36:41

难道你不能使用另一个Haar分类器来找到每一只眼睛(眼睛很容易找到),然后假设这个人有两只眼睛,我们定义了一个“水平”的脸,意味着眼睛是水平的。

只需测量两只眼睛之间的角度,并按该角度旋转图像。

angle = atan ( eye1.Y - eye2.Y ) / (eye1.X - eye2.X )
票数 8
EN

Stack Overflow用户

发布于 2012-04-15 14:05:32

在给定的图像中找到眼睛的准确位置绝非易事。在OpenCV中寻找眼睛的Haar级联产生了太多的假阳性而没有用,而且这种方法对图像旋转不是很健壮(它可能会补偿轻微的旋转,但我不知道训练图像)。如果我是你,我会在http://scholar.google.com上进行广度优先搜索,寻找这一研究领域的相关论文。

你需要一个健壮的头部姿势估计来对齐面部图像。我自己做了一些研究,我认为共享算法和代码在这里很有用。我见过的最有趣的方法是:

(Project page)(PDF Online available)

票数 18
EN

Stack Overflow用户

发布于 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代码可以从上面的站点下载。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10143555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档