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

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

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

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

20

Решение

вот хорошее решение

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

Другие решения

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

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

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

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

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

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

11

Проверьте Мат документация.

// converts old-style IplImage to the new matrix; the data is not copied by default
Mat(const IplImage* img, bool copyData=false);
4
  • 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);

Надеюсь, это поможет вам. Ура 🙂

4
По вопросам рекламы [email protected]