¿Cómo convertir las coordenadas de nuevo a la imagen (x, y) de la transformación de hough (rho, theta)?
Tengo un vector de líneas producidas llamando a la función de transformación de hough en Opencv, y necesito convertirlas nuevamente en coordenadas de imagen. Encontré este fragmento de código de muestra de la documentación oficial de Opencv, pero no lo entiendo. ¿Alguien explicaría por favor?
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 );
}
¿Qué está haciendo el 1000 en esta línea?
pt1(cvRound(x0 + 1000*(-b)), cvRound(y0 + 1000*(a)))
Además, ¿por qué pt2 tiene cables y negativos? Por ejemplo, si mi primera línea es (0,0) en formato (rho, theta), pt2 sería (0, -1000).
Gracias