2014-02-26 186 views
2

我正在做一些基本的图像处理来检测多边形和一点OCR来处理在C#上使用Emgu CV在白板上绘制的流程图。如何使用Emgu CV来检测图像中的箭头?

但现在,我面临着难题在任何方向检测到箭头(带有指向的<或>的直线)。 我想知道是否有人知道我可以用来检测箭头的方法,并且他们的指向结尾。从那时起,我可以找到附近的物体,并继续进行更多的处理。

我会很大欣赏任何人可能有的建议。

谢谢!

+0

请参阅[如何使用OpenCV检测简单的几何形状](http://stackoverflow.com/questions/11424002/how-to-detect-simple-geometric-shapes-using-opencv) – Haris

回答

1

有很多方法可以进行物体识别。为了知道选择哪一个,你应该有以下信息:我的物体(箭头)可以有不同的形状(宽度,高度,...)吗?形状是固定的,但我的对象可以有旋转,平移和缩放?其他对象是什么?

为了检测箭头,可以使用findContours,然后使用不同的特征来区分箭头的轮廓,例如周长,面积,密度,minAreaRect ...您也可以对轮廓进行多边形化并观察每个线段的参数,计算段之间的角度...(也许这对你的情况有点复杂)。

通过使用PCA可以找到形状的方向,它在箭头上工作得非常好。然后,为了找到结束点,您将只需分析对象的右侧和左侧部分。

对于检测线条,你也可以使用Hough,但如果你不熟悉它,在获得你想要的结果之前,你需要一些时间来使用阈值。

+0

嗨奥利弗,谢谢你的投入。 但是,我已经完成了大部分物体识别,如圆形,方形/矩形和其他流程图相关的形状。但是识别箭头仍然是一个问题。一般而言,箭头可指向任何方向。如果我能找到它,他们大部分的并发症就解决了。 一旦我能确定一个箭头,我想通过计算它的末端和最近的对象之间的距离,我可以创建一个流程逻辑。 – combomatrix