【问题标题】:Arrow shape detection using OpenCV使用 OpenCV 进行箭头形状检测
【发布时间】:2014-07-25 05:20:23
【问题描述】:

我目前正在尝试使用 OpenCV 检测箭头及其方向。 我已经完成了可以正常工作的轮廓检测过程,但我的问题在于形状匹配方面。

我尝试在 OpenCV 中使用 matchShapes 函数,但结果似乎很糟糕。 我使用了一个简单的模板图像和一个处理后的图像(通常是一张照片,但为了测试我使用了一个简单的图像)

模板图片:

处理后的图像:

使用这两个,matchShapes 告诉我左边的正方形看起来更像模板,而不是图像上的箭头。 我不知道这是从哪里来的。

matchShapes 对这种用途来说是一个不好的功能吗?有人告诉我用 SIFT 算法,但是这么简单的形状是不是有点矫枉过正?

谢谢,

【问题讨论】:

  • 你可以在这里参考答案stackoverflow.com/questions/22876351/…
  • 谢谢 :) 仍然有不好的情况,角度检查不是很好^^
  • 什么不好的情况?,也可以尝试使 approxPolyDP() 中的值 epsilon 更高,直到总点数为 7,因为您的箭头有 7 个角。

标签: c++ opencv image-processing shape


【解决方案1】:

最后,我使用了 SURF 算法,因为我想找到更复杂的对象;)

【讨论】:

  • 如果您解决了自己的问题,请将您的答案标记为已接受,或者如果您认为该问题对其他人没有用处,请将其删除。
【解决方案2】:

我会尝试与Image moment 一起寻找形状。为此,您必须找到图像区域的不同属性。最好的办法是对图像进行二值化。 首先我会告诉你一些描述形状的技巧,它们不必对图像时刻做任何事情。

首先是形状的周长/周长。计算所需的周长,将形状的所有轮廓元素的长度相加。接下来可以计算形状的面积,您可以计算像素或获取鞋带距离,如in this post。使用周长和面积,可以计算对象/形状的circularity。更详细地说,您可以创建一个边界框和它的凸包。最后但并非最不重要的一点是,该形状具有重心。这是一些你可以构建自己的特征向量的属性,但你必须有点创意。或者你可以使用图像时刻。

我不确定 OpenCV 中是否存在 Image moment,最好和稳健的时刻是 hu 时刻。我在 stackoverflow 中找到了一些解释:Meaning of the seven Hu invariant moments function from OpenCV。 Hu moment er 对旋转、平移和缩放具有鲁棒性。非常适合您的问题。

【讨论】:

  • 谢谢! Hu Moments 存在于 OpenCV 中,但我的问题更多是关于如何检测形状实际上是带有这些点的箭头 :) stackoverflow.com/questions/22876351/… 这篇文章对我有帮助,但它不是一个完美的检测
猜你喜欢
  • 1970-01-01
  • 2019-02-25
  • 2014-03-28
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 2016-06-01
  • 1970-01-01
相关资源
最近更新 更多