【问题标题】:How to convert coordinates back to image (x,y) from hough transformation (rho, theta)?如何将坐标从霍夫变换(rho,theta)转换回图像(x,y)?
【发布时间】:2011-03-15 07:22:46
【问题描述】:

我有一个通过在 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)。

谢谢,

【问题讨论】:

    标签: opencv hough-transform


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多