Как преобразовать CvMat* в cv::Mat в OpenCV3.0

В opencv2.4.10, который я использовал ранее, преобразование из CvMat* в cv::Mat можно выполнить, как показано ниже.

CvMat *src = ...;
cv::Mat dst;
dst = cv::Mat(src);

Однако в opencv3.0 rc1 не может конвертировать так. На определенном веб-сайте это преобразование можно выполнить, как показано ниже.

CvMat* src = ...;
cv::Mat dst;
dst = cv::Mat(src->rows, src->cols, src->type, src->data.*);

Если тип src — «плавающий», последний аргумент — «src->data.fl».

Почему конструктор cv::Mat уменьшен? Или есть какие-то методы преобразования из CvMat* в cv::Mat?


person Toshi    schedule 25.05.2015    source источник


Ответы (2)


CvMat* matrix;
Mat M0 = cvarrToMat(matrix);

OpenCV предоставил эту функцию вместо Mat(matrix).

Примечание. В OpenCV 3.0 они включили в эту функцию все конструкторы, которые преобразуют структуры старого стиля (cvmat, IPLImage) в новый стиль Mat.

person hariprasad    schedule 05.01.2016
comment
Заметка очень полезная, я просто отредактировал ее, чтобы теперь она выделялась. - person JTIM; 05.12.2016

Чтобы преобразовать CvMat* в Mat, вам нужно сделать следующее:

cv::Mat dst(src->rows, src->cols, CV_64FC1, src->data.fl);
person Abc    schedule 16.06.2015