在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]