OpenCV如何表示具有两个两个值的直线

How does OpenCV represent a line with 2 two values?

本文关键字:两个 何表示 表示 OpenCV      更新时间:2023-10-16

在OpenCV的imgproc模块中,有一个名为HoughLines的函数,它获取二进制图像和一些其他参数,并返回Vec2f的矢量,这些矢量是浮点值对。

这些值应该表示二进制图像中的线条,但我很难理解如何表示。

OpenCV文档指出,每对的第一个值是距离原点的距离。从原点到什么的距离?线路?如果是,线路的哪一部分?

他们说,Vec2f的第二个值是"以弧度为单位的直线旋转角度"。相对于什么轴的旋转角度?

理想情况下,我想将这种线的表示转换为我可以使用的东西,比如好的、旧的笛卡尔y = mx + c。如果不是,我至少希望能够找到位于Vec2f表示的线上的每个点。

关于我如何实现以上两个目标,有什么想法吗?或者,Vec2f[0]Vec2f[1]精确地是什么意思?

您在此处指向的文档链接中给出了解释。该线是以参数化的方式定义的,即在形式x cos(a) + y sin(a) = r下。与笛卡尔形式相反,它允许表达垂直线。因此,如果你没有垂直线(即sin(a)从不为空),那么你的情况下的笛卡尔形式是:

y = -  ( cos (Vec2f[1]) / sin (Vec2f[1] ) x - Vec2f[0]