3
我有一个通过在Opencv中调用hough转换函数产生的线条矢量,并且需要将它们转换回图像坐标。我从Opencv官方文档中找到了这段代码,但我不明白。请有人解释一下吗?如何将坐标转换为图像(x,y)从hough变换(rho,theta)?
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)。
感谢,