OpenCV边缘匹配

时间:2018-06-08 09:31:15

标签: opencv image-processing

我是opencv的新手,我已经阅读了一些教程和项目源代码。似乎人们倾向于根据颜色进行物体检测。

我想知道是否有办法根据边缘的曲线进行物体检测。

例如,我有一个已知的对象,其边缘类似于A,我知道这个对象在不同图像中的边缘非常相似但不一样,如B.现在考虑B在Pic C中,我的目标是根据在C中搜索A的相似形状来找出C中B的轮廓或边缘。

基于搜索已知形状的相似形状,有没有任何轮廓检测或边缘检测方法。

My Example Image

1 个答案:

答案 0 :(得分:0)

我认为OpenCV中的默认方法是matchShapes;但我使用了一种效果相当好的通用方法。

  • 对于每个轮廓,取质心。
  • 从质心上方的最高点跟随轮廓,取距离到质心。
  • 沿轮廓移动一步(例如轮廓长度的1/100)。距离再次。
  • 完成所有步骤后,您将拥有一系列距离。
  • 比较数组,例如使用余弦相似性

您可以使此方法缩放和旋转不变。

  • 如果您想要 scale 不变性,请在比较前规范化数组。
  • 如果你想拥有 rotation 不变性,你可以移动数组并找到最好的匹配