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

6

我调用了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坐标是负数呢?例如,如果我的第一条线以(rho,theta)格式从(0,0)开始,那么pt2将是(0,-1000)。

谢谢。

1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接