gpt4 book ai didi

c++ - 使用 OpenCV 比较两个图像

转载 作者:太空狗 更新时间:2023-10-29 21:07:31 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

convexity defects

  • 上图来自 OpenCV API cvConvexityDefects 函数的说明。请阅读其说明以了解有关其使用方式的信息。
  • 获得凸包后,检查缺陷的大小。其中 4 个的大小应该大致相同(因为手指的长度相同)。如果是这样,您将张开手给您击掌。

关于c++ - 使用 OpenCV 比较两个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com