У меня есть вектор линий, созданный путем вызова функции грубого преобразования в 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-шнуры?Например, если моя первая строка (0,0) в формате (rho, theta), pt2 будет (0, -1000).
Спасибо,