gpt4 book ai didi

c++ - Opencv HoughLines 线西塔?

转载 作者:太空狗 更新时间:2023-10-29 20:10:54 26 4
gpt4 key购买 nike

我有一个关于 HoughLines 的 opencv 库的问题。以下格式来自官网:

C++: void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )

以及lines的输出数组参数的解释,它说:

lines – 线的输出 vector 。每条线由一个二元 vector 表示:rho 和 theta。垂直线的 theta 为 0,水平线的 pi/2(辐射率)。

请问theta的原理是什么?看起来theta在0~1.57之间(因为pi/2是1.57),但是我运行代码发现theta可以超过1.57变成一些奇怪的值,如下图,红线是检测到的HoughLines 的行,sita 是参数行中的值? enter image description here .

谁能告诉我线输出的theta有什么规律性?

非常感谢!

最佳答案

OpenCV 的文档、这个问题的另一个答案和维基百科(在撰写这个答案时)是错误的。这是我一生中第一次在维基百科中发现技术错误。

cv2.HoughLines 为您提供映射到线的对 (r, theta)。 Theta 是(图像的)x 轴和直线之间的逆时针角度。它介于零和 pi 之间。 Rho 是从图像左上角到直线的“距离”。正如 OP 指出的那样,rho 通常为负,因此距离不合适。以下是 OpenCV 作者的意思:

如果 theta < pi/2,我们谈论的是一条从图像左下角到右上角的直线。在这种情况下,它不能穿过 0 以下的 x 轴,并且我们确切地知道要绘制的线(给定 rho)。到目前为止,OpenCV 文档是正确的。

如果 theta > pi/2,那么我们需要消除与原点等距的两条平行线之间的歧义。为了解决这个问题,HoughLines 的作者制定了一个规则:如果 theta > pi/2,则通过图像左侧的线具有正 rho,而通过图像顶部的线具有负 rho。

关于c++ - Opencv HoughLines 线西塔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36052757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com