opencv 极坐标下用Hough变换求直线的平移

7eumitmz  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(161)

我有一点麻烦,理解如何线绘制后,做了霍夫变换使用极坐标。
OpenCV example上,他们是这样做的:

a = math.cos(theta)
b = math.sin(theta)
x0 = a * rho
y0 = b * rho
pt1 = (int(x0 + 1000*(-b)), int(y0 + 1000*(a)))
pt2 = (int(x0 - 1000*(-b)), int(y0 - 1000*(a)))

我知道他们是在同一条线上取两个相距很远的点,但我很难理解“投影”/乘以x点的sin和y点的cos。
有人能给我点启发吗?

osh3o9ms

osh3o9ms1#

rtheta的定义如下所示。
因此,蓝线方向单位向量V( cos(theta), sin(theta) ),线上的一个点是r * **V**(在您的描述中,这是(x0,y0))。
线上的点可以通过从该点沿着线移动来获得。沿着方向的单位矢量U(垂直于V)为( -sin(theta), cos(theta) )( sin(theta), -cos(theta) )
所以,线上的点是:
r * **V** + k * **U**
其中,标量k的值是任意移动量。(在您的描述中,使用的k值为1000-1000
因此,简短的回答
x点的sin和y点的cos
是,U:沿着直线的单位方向向量。

相关问题