2011-03-15 57 views
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)。

感謝,

回答

相關問題