我想检测一条线并提取其两个终点。常见的方法是使用霍夫变换。幸运的是,OpenCV中有sample关于问题,因此我绘制了一条两条终点p1(100,200), p2(400,200)
的线。我认为前面提到的方法只会给我提供这些要点。我的样本图片是
霍夫变换为我提供了两张
的图像
对于Canny过滤器,
在代码中,似乎检测到两行。这解释了为什么红线较粗,这表明有两条线而不是一条线。当我打印出行数时,它显示如下两个
lines.size(): 2
p1:<99,201> p2:<401,201>
lines.size(): 2
p1:<102,198> p2:<398,198>
为什么我要两条线?
答案 0 :(得分:1)
这可能是由于HoughSpace中垃圾箱的宽度造成的。 您可能选择默认的OpenCv函数之一,即
HoughLines(X, X, 1, CV_PI/180, X, X, X );
非X的参数定义了分档see的宽度。 它说:
rho : The resolution of the parameter r in pixels. We use 1 pixel.
第一个参数和第二个参数:
theta: The resolution of the parameter \theta in radians. We use 1 degree (CV_PI/180)
我现在不是您选择的值,但您可能想要选择更大的值。