Исключение для матричной функции OpenCV

Я новичок в OpenCV, и я почти закончил свою первую большую программу. На самом деле, я был бы, если бы не произошло неприятное исключение. Вот оно: Ошибка OpenCV: неверный флаг (параметр или поле структуры) (нераспознанный или неподдерживаемый тип массива) в неизвестной функции, файл ........\ocv\opencv\src\cxcore\cxarr ay .cpp, строка 2476 А вот строка, в которой происходит исключение: cvMatMul(&matIntrinsec, &matExtrinsec, &result); Для темы также может быть важно знать, на что перемножаются эти три матрицы: (потому что, возможно, я просто делаю с ними какую-то глупость)

В основном для matIntrinsec и matExtrinsec я считываю значения из файла, который отлично работает, я уже протестировал его. И я помещаю значения в двумерный массив, а затем использую функцию CvMat для построения матрицы.

cvInitMatHeader(&matIntrinsec, 3, 3,CV_64FC1, this->intrinsecos);

cvInitMatHeader(&matExtrinsec, 3, 3,CV_64FC1, this->extrinsecos);

Что касается параметра «результат», то в основном это унитаризованная переменная CvMat для получения результата умножения:

Результат CvMat;

Очень извиняюсь, если вопрос глупый. Но, пожалуйста, помогите мне!


person Juls    schedule 26.08.2010    source источник
comment
Вставьте исходный код. Кроме того, вам нужно найти строку в вашем коде, которая активирует эту ошибку. Возможно, вы передаете странные параметры одной функции OpenCV.   -  person karlphillip    schedule 27.08.2010
comment
эм, просто интересно. Разве внешний вид не должен быть 3x4?   -  person zerm    schedule 28.08.2010


Ответы (1)


При использовании C API OpenCV вы должны вручную инициализировать параметры "назначения" для функций. Поскольку вы знаете размер вывода, вы можете легко сделать это с помощью cvCreateMat(). В качестве альтернативы вы можете переключиться на C++ API, в котором функции автоматически выделяют матрицы назначения с помощью функции cv::Mat::create().

person Michael Koval    schedule 30.10.2010