【问题标题】:compare two images using OpenCV使用 OpenCV 比较两个图像
【发布时间】:2011-06-18 12:49:26
【问题描述】:

我想使用 OpenCV 比较两个图像。我可以在其他训练数据集中过滤最近的匹配结果吗?
示例:包含训练图像的数据库,其中用一只手显示数字 5。

是否可以匹配其他人,与该训练图像相同的标志..? 使用 OpenCV。请帮帮我。

【问题讨论】:

    标签: c++ opencv image-comparison


    【解决方案1】:

    请参阅我对 this question 的回答 - 没有直接、简单的解决方案。

    【讨论】:

      【解决方案2】:

      正如 sinelaw 所说,一般而言没有直接、简单的解决方案。

      但是,我可以想到一种适用于您的具体示例的简单方法。

      • 检测图像中与人体皮肤对应的区域。这是假设该人没有戴手套(如果戴手套,知道手套的颜色会有所帮助)。有关皮肤检测,请参阅this example。基本上,您可以使用色度将图像转换为 YUV 和阈值,因为众所周知,人类皮肤只占据色度谱的一小部分,而与种族无关
      • 检测轮廓。在 OpenCV 中,这是使用 cvFindContours 函数完成的。这是用于查找椭圆的函数的example。您现在对任何形状的轮廓感兴趣,而不仅仅是椭圆。
      • 现在,遍历所有轮廓,寻找一个看起来像张开的手发出 5 信号的轮廓。这并不像听起来那么难,因为您正在寻找一个带有 4-5 个凸面缺陷(黑色箭头)的凸包(红色轮廓):

      • 上图来自OpenCV APIcvConvexityDefects函数的描述。去阅读它的描述,了解它是如何使用的。
      • 获得凸包后,检查缺陷的大小。其中 4 个应该大致相同(因为手指的长度相同)。如果是这种情况,您就可以拿到高五。

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-17
        • 2015-05-20
        • 2013-12-30
        • 1970-01-01
        • 2011-12-04
        相关资源
        最近更新 更多