我目前正在尝试使用OpenCV检测箭头及其方向。 我已经完成了轮廓检测过程,但是我的问题在于形状匹配方面。
我尝试在OpenCV中使用matchShapes函数,但我的结果似乎非常糟糕。 我使用一个简单的模板图像和一个处理过的图像(通常是一张照片,但测试我使用了一个简单的图像)
模板图片:
已处理的图片:
使用这两个,matchShapes告诉我左边的方块看起来更像是图像上箭头的模板。 我不知道这是从哪里来的。
matchShapes是否适合此用途?有人告诉我使用SIFT算法,但这样一个简单的形状是不是有点矫枉过正?
谢谢,
答案 0 :(得分:1)
我会尝试使用Image moment找到形状。为此,您必须找到图像区域的不同属性。最好的是想要将图像二值化。 首先,我告诉你一些技巧来描述他们不必对形象时刻做些什么的形状。
首先会有形状的周长/周长。计算所需的周长,以总计形状的所有轮廓元素的长度。接下来可以计算形状的面积,您可以计算像素或像in this post那样计算鞋带距离。通过周长和面积,可以计算物体/形状的circularity。更详细的是,您可以创建它的边界框和凸包。最后不是但并非最不重要的是形状具有重心。这是一些属性,你可以建立自己的特征向量,但你必须有点创意。或者你可以使用图像时刻。
我不确定OpenCV中是否存在Image时刻,最好和最强大的时刻是胡子时刻。我在stackoverflow中找到了一些explenation:Meaning of the seven Hu invariant moments function from OpenCV。胡时刻对旋转,翻译和规模都很强大。非常适合您的问题。
答案 1 :(得分:0)
最后,我使用SURF算法,因为我想找到更复杂的对象;)