2011-03-15 5 views
3

나는 Opencv에서 hough transformation 함수를 호출하여 생성 된 선의 벡터를 가지고 있으며이를 이미지 좌표로 다시 변환해야한다. 이 샘플 코드는 Opencv의 공식 문서에서 찾았지만 이해할 수는 없습니다. 아무에게도 설명해 주시겠습니까?좌표를 hough 변환 (ρ, theta)에서 이미지 (x, y)로 다시 변환하는 방법은 무엇입니까?

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 코드가 있습니까? 예를 들어, 내 첫 번째 줄이 (ρ, theta) 형식의 (0,0)이면 pt2는 (0, -1000)이됩니다.

감사합니다,

정상 라인에 대한 수학이 작동하는 방법

답변

관련 문제