【问题标题】:OpenCV Restrict Face Detection Only in Correct OrientationOpenCV 仅在正确的方向上限制人脸检测
【发布时间】:2015-12-11 17:14:03
【问题描述】:

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

我想将人脸检测限制为仅在图像处于肖像模式时检测人脸。图像向左、向右或上下旋转时不检测人脸。我一直在寻找仅在纵向模式下限制面部检测的日子,但我无法这样做。

我正在从具有它的图像中读取“exif”信息,并根据 exif 旋转来旋转图像。但是如果我手动旋转图像,它的 exif 信息不会改变。所以我必须旋转图像并检测人脸,直到找到人脸。人脸检测算法并不局限于方向。

我的问题是如果图像是纵向的并且它是无方向的,或者图像是横向的并且它是无方向的,如何限制算法以旋转和检测具有正确方向的输出图像的面部。

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

我想要什么。

我得到了什么。

编辑

算法

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

如果图像方向混乱,该程序假设将图像旋转到正确的方向,这取决于人脸检测让用户在不需要手动旋转图像的状态下查看图片。

【问题讨论】:

  • 很简单,如果图像被旋转,则不应用人脸检测算法。
  • 我正在对图像应用算法以使它们处于正确的方向。 _ets说文件夹中有数百张迷失方向的图片。我必须让它们处于正确的方向。所以最初我不知道图像是否旋转。我必须应用算法来寻找面部并使它们处于正确的方向。如何知道图像是否旋转?
  • 找到解决办法了吗?

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


【解决方案1】:

OpenCV 的人脸检测器是“方向敏感的”,这意味着它将检测到大部分是直立的人脸。如果图像具有正确的方向,您应该可以检测到更多的人脸并具有更高的置信度。

【讨论】:

  • 上图仅为示例。我正在阅读一个可以包含多个图像的文件夹。如果图像有多个面,则没有必要。并且程序不知道它正在读取的图像的当前方向是什么。我是说即使图像已经顺时针或逆时针旋转,OpenCV 人脸检测器仍然可以检测到人脸。我必须以正确的方向拍摄照片。
  • 我不确定我是否理解你的问题。我以为你想使用人脸检测结果来猜测图像的正确方向。
  • 我添加了我正在遵循的算法。请参阅编辑。
  • 您可以尝试对四种可能的方向进行人脸检测,然后根据检测到的人脸的数量和置信度为每个方向计算一个“up-right score”。
  • 那么只有一张脸的图像呢?如果只有一张人脸并且算法检测到错误的方向,如何消除错误概率?我的意思是如果图像向左或向右旋转并且它检测到错误方向的面部?
【解决方案2】:

我会尝试:

对于每个检测到的人脸:

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

现在您将能够检查检测到的人脸方向是否正确。

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2012-04-15
    • 2012-03-29
    相关资源
    最近更新 更多