gpt4 book ai didi

c++ - 为什么霍夫变换检测到两条线而只有一条线

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:17:54 24 4
gpt4 key购买 nike

我想检测一条线并提取它的两个端点。常用的方法是使用霍夫变换。幸运的是有一个 sample在 OpenCV 中关于 is matter,因此我画了一条线,其两个端点 p1(100,200), p2(400,200)。我认为上述方法只会为我提供这些要点。我的示例图像是

enter image description here

霍夫变换为我提供了两幅图像

enter image description here

enter image description here

对于 Canny 过滤器,

enter image description here

在代码中,似乎检测到两行。这解释了为什么红线较粗,这表明有两条线而不是一条线。当我打印出行数时,它显示如下两个

lines.size(): 2
p1:<99,201> p2:<401,201>
lines.size(): 2
p1:<102,198> p2:<398,198>

为什么我得到两条线?

最佳答案

这可能是由于 HoughSpace 中垃圾箱的宽度。您可能会选择默认的 OpenCv 函数之一,即

HoughLines(X, X, 1, CV_PI/180, X, X, X );

不是 X 的参数定义了 bin 的宽度 see .上面写着:

rho:参数 r 的分辨率(以像素为单位)。我们使用 1 个像素。

对于第一个参数和第二个参数:

theta:参数\theta 的分辨率(以弧度为单位)。我们使用 1 度 (CV_PI/180)

我现在不知道你选择的值,但你可能想选择更大的值。

关于c++ - 为什么霍夫变换检测到两条线而只有一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com