OpenCV识别直线和曲线

9
我刚开始学习OpenCV编程。请问如何在OpenCV中识别线条和曲线?我的问题是,我要确定图像是否包含凸或凹(水平或垂直)曲线,垂直、对角线或水平线。
在我的代码中,我使用了 CvSetImageROI 来获取图像的特定部分,然后我试图根据上述线条/曲线进行识别。
OpenCV中是否有可用的函数?非常感谢您的帮助。顺便说一下,我正在使用Linux和C++。

1
你有没有找到在图像中识别曲线的方法? - Garvita Tiwari
1个回答

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

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

对于曲线,检测过程会更加复杂,您需要使用通用霍夫变换。目前OCV中还没有提供该功能,但您可以自己编写或寻找一个很好的实现。http://en.wikipedia.org/wiki/Generalised_Hough_transform给出了其简介。


6
你可以考虑使用Canny()和FindContours()函数。 - Adrian
我如何能够检查角度?我能从参数中获取吗?非常感谢! - cmsl
Hough变换返回角度和截距(如果使用经典的变换)以及线段端点(对于概率性变换)。您可以从端点中使用简单的几何计算提取角度,也可以使用经典变换。请查看OpenCV文档以及上面链接中的示例。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接