mar*_*arc 6 c++ opencv feature-detection
我是opencv的新手(在c ++中),我正在尝试实现线路检测.
我有一张有几行的图片,我正在尝试确定线条之间的距离.我知道有Hough,Canny等,但是如何获得不同线的坐标来计算线之间的距离?我应该使用opencv轮廓函数还是有更好的方法?我不需要完整的代码示例,但有人能告诉我完成工作的最佳方法吗?
X''*_*X'' 13
线检测经常导致使用Hough变换,Canny边缘检测器和轮廓检测仅在需要时用作方便的预处理器.
如果您有平行线,请使用
void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )
Run Code Online (Sandbox Code Playgroud)
用于检测第二个参数将包含检测的行:
lines - 行的输出向量.每条线由两元素矢量(ρ,θ)表示.ρ是距坐标原点(0,0)(图像的左上角)的距离.θ是以弧度表示的线旋转角度(0~垂直线,π/ 2~水平线).
[opencv2refman.pdf]
这意味着,两条线之间的距离应该是abs(rho1-rho2),距离是第一列中像素值之间的绝对差值lines.(注意:方法应该在CV_HOUGH_STANDARD这里!)
对于非平行线,您必须定义您认为的距离,但OpenCV仍然可以为您提供每个检测到的线的端点坐标.
你只需要使用method = CV_HOUGH_PROBABILISTIC.
CV_HOUGH_PROBABILISTIC概率Hough变换(如果图片包含一些长线性段,则效率更高).它返回线段而不是整行.每个段由起点和终点表示,矩阵必须是(创建的序列将是)CV_32SC4类型.
[opencv2refman.pdf]
您还可以在opencv_tutorials.pdf已安装的OpenCV的文档中找到教程.
| 归档时间: |
|
| 查看次数: |
4228 次 |
| 最近记录: |