Перейти к содержимому
Compvision.ru

lindstorm

Пользователи
  • Количество публикаций

    3
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем lindstorm


  1. Сделал по примеру.

    Только делаю в билдере и поэтому функция 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 );


  2. Ребят,такое дело.

    Пишу курсовой на тему перспективных преобразований.

    У меня есть исходный массив 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 - здесь показано конечное значение матрицы.

    Спасибо за любую помощь.

×