Подтвердить что ты не робот

Преобразование из IplImage * в cv:: MAT

Я искал преобразование IplImage * в Mat, но все ответы касались преобразования в cvMat.

Как я могу это сделать? и в чем разница между Mat и cvMat?

Заранее спасибо

4b9b3361

Ответ 1

здесь хорошее решение

Mat(const IplImage* img, bool copyData=false);

Ответ 2

Для записей: взглянув на core/src/matrix.cpp, похоже, что конструктор cv::Mat(IplImage*) исчез.

Но я нашел эту альтернативу:

IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl);  // default additional arguments: don't copy data.

Ответ 3

Рекомендуемым способом является cv::cvarrToMat функция

cv::Mat - базовая структура данных для OpenCV 2.x

CvMat - старый аналог C cv::Mat

Ответ 5

  • cv:: Mat или Mat, оба они одинаковы.

  • У Mat есть оператор CvMat(), поэтому выполняется простое присваивание

Преобразование Mat в CvMat

Mat mat = ---------;
CvMat cvmat = mat;

Преобразование CVMat в Mat

Mat dst = Mat(cvmat, true);  

Преобразование Mat в IplImage *

Для одиночного канала

IplImage* image = cvCloneImage(&(IplImage)mat); 

Для трехканального

IplImage* image = cvCreateImage(cvSize(mat.cols, mat.rows), 8, 3);
IplImage ipltemp = mat;
cvCopy(&ipltemp, image);

Надеюсь, это поможет вам. Приветствия.