gpt4 book ai didi

opencv - 如何将坐标从霍夫变换(rho,theta)转换回图像(x,y)?

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:13 24 4
gpt4 key购买 nike

我有一个通过调用 Opencv 中的霍夫变换函数生成的线向量,需要将它们转换回图像坐标。我从Opencv的官方文档中找到了这段示例代码,但我看不懂。谁能解释一下?

for( size_t i = 0; i < lines->size(); i++ )
{
float rho = lines->at(i)[0]; //[0] is rho
float theta = lines->at(i)[1]; //[1] is theta
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
cv::Point pt1(cvRound(x0 + 1000*(-b)),
cvRound(y0 + 1000*(a)));
cv::Point pt2(cvRound(x0 - 1000*(-b)),
cvRound(y0 - 1000*(a)));
line( *mat, pt1, pt2, Scalar(255,0,0), 1, 8 );
}

1000在干什么?

pt1(cvRound(x0 + 1000*(-b)), cvRound(y0 + 1000*(a)))

此外,为什么 pt2 有负 y 线?例如,如果我的第一行是 (0,0),采用 (rho, theta) 格式,则 pt2 将是 (0, -1000)。

谢谢,

最佳答案

这就是法线的数学原理。看看这篇文章 - Converting lines from normal to slope intercept form它通过数学计算。

关于opencv - 如何将坐标从霍夫变换(rho,theta)转换回图像(x,y)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308647/

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