OpenCV如何表示具有2个两个值的线?
How does OpenCV represent a line with 2 two values?
在 OpenCV 的 imgproc
模块中,存在一个名为 HoughLines
的函数,它采用二值图像、一些其他参数和 returns Vec2f
的矢量这是成对的浮点值。
这些值应该表示在二值图像中找到的线条,但我很难理解如何。
每对 OpenCV documentation 状态的第一个值是距原点的距离。原点到什么距离?线?如果有,是哪一行?
他们说 Vec2f
的第二个值是 "line rotation angle in radians"。相对于什么轴的旋转角度?
理想情况下,我想将这种直线表示法转换成我可以使用的东西,例如好的旧笛卡尔坐标 y = mx + c
。如果没有,我至少希望能够找到 Vec2f
.
代表的线上的每个点
关于如何实现上述两个目标的任何想法?或者,Vec2f[0]
和 Vec2f[1]
值 精确地 是什么意思?
您指向 here 的 link 文档中给出了解释。该线以参数方式定义,即以 x cos(a) + y sin(a) = r
形式定义。与笛卡尔形式相反,它允许表达垂直线。因此,如果你没有垂直线(即 sin(a) 永远不会为空),你的情况下的笛卡尔形式是:
y = - ( cos (Vec2f[1]) / sin (Vec2f[1] ) x - Vec2f[0]
在 OpenCV 的 imgproc
模块中,存在一个名为 HoughLines
的函数,它采用二值图像、一些其他参数和 returns Vec2f
的矢量这是成对的浮点值。
这些值应该表示在二值图像中找到的线条,但我很难理解如何。
每对 OpenCV documentation 状态的第一个值是距原点的距离。原点到什么距离?线?如果有,是哪一行?
他们说 Vec2f
的第二个值是 "line rotation angle in radians"。相对于什么轴的旋转角度?
理想情况下,我想将这种直线表示法转换成我可以使用的东西,例如好的旧笛卡尔坐标 y = mx + c
。如果没有,我至少希望能够找到 Vec2f
.
关于如何实现上述两个目标的任何想法?或者,Vec2f[0]
和 Vec2f[1]
值 精确地 是什么意思?
您指向 here 的 link 文档中给出了解释。该线以参数方式定义,即以 x cos(a) + y sin(a) = r
形式定义。与笛卡尔形式相反,它允许表达垂直线。因此,如果你没有垂直线(即 sin(a) 永远不会为空),你的情况下的笛卡尔形式是:
y = - ( cos (Vec2f[1]) / sin (Vec2f[1] ) x - Vec2f[0]