lindstorm
-
Количество публикаций
3 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем lindstorm
-
-
Сделал по примеру.
Только делаю в билдере и поэтому функция cvSolve малость другая
Но почему-то массив coeff, в котором должны быть коэффициенты матрицы заполняется нулями.
CvMat* warp_matrix = cvCreateMat(3,3,CV_64FC1);
double a[8][8], b[8];
double coeff[8];
CvMat A = cvMat( 8, 8, CV_64FC1, a) ;
CvMat B = cvMat( 8, 1, CV_64FC1, b );
CvMat X = cvMat( 8, 1, CV_64FC1, coeff );
for(int i =0; i < 4;++i)
{
a[0] = a[i+4][3] = srcQuad.x;
a[1] = a[i+4][5] = srcQuad.y;
a[2] = a[i+4][5] = 1;
a[3] = a[4] = a[5] = a[i + 4][0] = a[i+4][1] = a[i+4][2] = 0;
a[6] = -srcQuad.x * dstQuad.x;
a[7] = -srcQuad.y * dstQuad.x;
a[i+4][6] = -srcQuad.x * dstQuad.y;
a[i+4][7] = -srcQuad.y * dstQuad.y;
b = dstQuad.x;
b[i+4] = dstQuad.y;
}
cvSolve( &A, &B, &X );
-
Ребят,такое дело.
Пишу курсовой на тему перспективных преобразований.
У меня есть исходный массив CvPoint2D32f srcQuad[4], где хранятся координаты исходного массива и CvPoint2D32f dstQuad[4], где хранятся координаты исходного массива. Затем с помощью функции cvGetPerspectiveTransform(srcQuad, dstQuad, warp_matrix), я получаю матрицу перспективного преобразования
CvMat* warp_matrix = cvCreateMat(3,3,CV_32FC1);
Это все работает, но мне нужно знать как идет расчет этой матрицы.
Нашел формулу на http://opencv.willowgarage.com/documentation/geometric_image_transformations.html, там mapmatrix. Не знаю, как ее считать.
Вот еще немного : http://code.google.com/p/javacv/issues/detail?id=82#c2 - здесь показано конечное значение матрицы.
Спасибо за любую помощь.
cvGetPerspectiveTransform формула
в OpenCV
Опубликовано · Report reply
Спасибо!
Все получилось!
Во-первых опечатка, во вторых матрицу warp_matrix надо создавать типа CV_32FC1