2011-11-08 77 views
5

我刚开始学习OpenCV编程。我可以问一下在OpenCV中如何识别线条和曲线?我的问题是,我必须确定图像是否包含凸形或凹形(水平或垂直曲线)曲线,垂直线,对角线或水平线。OpenCV识别线条和曲线

在我的代码中,我使用CvSetImageROI来拍摄图像的特定部分,然后我试图根据所述线条/曲线来识别每个图像。

OpenCV中是否有可用的功能?非常感谢你的帮助。顺便说一下,我使用的是Linux和C++。

+0

你有没有找到任何方法来识别图像中的曲线。 –

回答

5

霍夫变换http://en.wikipedia.org/wiki/Hough_transform, http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm 是做它的标准方法。以其简单的形式(如在OpenCV中实现的),它可以检测任意位置,角度和线段的行。

看看这里的一个例子 http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=hough#houghlinesp

对于曲线,检测过程是比较复杂一点,你需要的一般Hough变换它不是在OCV尚未公布,但你可以把它写成一个练习或寻找一个好的实现。 http://en.wikipedia.org/wiki/Generalised_Hough_transform描述它(简而言之)

+3

您可能还会考虑Canny()和FindContours() – Adrian

+0

我将如何检查角度?我可以从参数中获得吗?非常感谢你! – cmsl

+0

霍夫变换返回角度和截距(如果你使用经典的)和段端点(对于概率的)。您可以使用简单的几何计算从端点提取角度或使用经典变换。检查OpenCV文档和上面链接中的示例 – Sam