Opencv Hough线给出负的rhos

Opencv Hough线给出负的rhos,opencv,Opencv,我正在尝试使用HoughLines()生成一些Hough线,但有些线具有负值rho值,如: array([-58,3.07177949]],dtype=float32)) array([-56,3.05432606]],dtype=float32)) 既然rho=sqrt(x^2+y^2),为什么rho可以是负数?原点是图像的中心吗?rho不是sqrt(x^2+y^2)。它是直线与原点的偏移量,一侧为正值,另一侧为负值。从中,该行的一般表达式为: rho=x*cos(theta)+y*sin(t

我正在尝试使用
HoughLines()
生成一些Hough线,但有些线具有负值
rho
值,如:

array([-58,3.07177949]],dtype=float32))

array([-56,3.05432606]],dtype=float32))


既然
rho=sqrt(x^2+y^2)
,为什么
rho
可以是负数?原点是图像的中心吗?

rho
不是
sqrt(x^2+y^2)
。它是直线与原点的偏移量,一侧为正值,另一侧为负值。从中,该行的一般表达式为:


rho=x*cos(theta)+y*sin(theta)

为了进一步扩展,
theta
位于
[0,pi)
中,因此
rho
可以为负值,这与
[pi,2*pi)
。如果您自己实现Hough变换,您可以选择是否使用该参数化,或者,您可以在
[0,2*pi)
中使用角度,并且只能使用正
rho
值。但是OpenCV在
中使用
θ
[0,pi)
如图所示:max_theta…必须介于
min_theta
CV_pi
之间。原点是图像的中心吗?@JohnM。您现在可能已经找到了,但原点(0,0)在OpenCV图像中,是图像的左上角。正X轴向右,正Y轴向下。这与数学世界的直觉相反(正Y轴通常向上),但对于计算机图形来说是正常的。