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

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

最佳答案

就像sinelaw所说,一般中没有简单易用的解决方案

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

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


  • 上面的图片来自cvConvexityDefects函数的OpenCV API描述。阅读其说明以获取有关其用法的信息。
  • 拥有凸包后,检查缺陷的大小。其中的4个尺寸应大致相同(因为手指的长度相同)。在这种情况下,您可以张开手给您高五。
  • 关于c++ - 使用OpenCV比较两个图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4850384/

    10-10 23:19
    查看更多