OpenCV仅在正确的方向上限制人脸检测

时间:2015-09-15 12:33:12

标签: java android opencv image-processing opencv3.0

我正在开发一个需要在图像中进行人脸检测的项目。我正在使用Haar Cascading' frontal face'。

我想限制脸部检测以仅在镜像模式下检测脸部。图像左右,上下颠倒时不检测脸部。我一直在寻找几天只能在纵向模式下限制脸部检测,但我无法这样做。

我正在阅读' exif'来自具有它的图像的信息并基于exif旋转旋转图像。但如果我手动旋转图像,其exif信息将不会改变。所以我必须旋转图像并检测脸部直到我找到脸部。人脸检测算法不限于方向。

我的问题是,如果图像是肖像并且它是取向的,或者图像是横向的并且它是取向的,那么如何限制算法旋转并检测具有正确定向输出图像的面部。

我在Java中使用OpenCV。将在Android和iOS中实现相同的功能。

我想要的。

What i Want

我得到的是什么。

What I am getting after rotating

修改

算法

  • 文件夹提供给程序
  • 从文件夹中读取所有图像并将其添加到列表中。
  • 创建一个新主题并将图像传递给它。
  • 检测脸部。
  • 如果不成功,请再次旋转并再次检测。
  • 如果成功,请终止线程。
  • 为所有图像做。

如果图像不正确,程序可以按正确的方向旋转图像,具体取决于人脸检测,让用户在不必手动旋转图像的状态下查看图像。

2 个答案:

答案 0 :(得分:0)

OpenCV的人脸检测器是"方向敏感",这意味着它将检测大多数右上脸。如果图像具有正确的方向,则应该检测到更多面部并且具有更高的置信度。

答案 1 :(得分:0)

我会尝试:

对于每个检测到的脸:

  • 使用haar级联来检测左眼和右眼并比较它们的位置。

现在,您将可以检查检测到的面部是否正确。