web-dev-qa-db-fra.com

Conversion de IplImage * à cv :: MAT

J'ai cherché à convertir un IplImage * en Mat, mais toutes les réponses concernaient la conversion en cvMat.

Comment puis-je le faire? et quelle est la différence entre Mat et cvMat?

Merci d'avance

21
user1807367

voici une bonne solution

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

Pour la petite histoire: en jetant un œil à core/src/matrix.cpp, il semble que le constructeur cv::Mat(IplImage*) ait disparu.

Mais j'ai trouvé cette alternative:

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

La méthode recommandée est le cv::cvarrToMat fonction

cv::Mat - est la structure de données de base pour OpenCV 2.x

CvMat - est l'ancien analogue C de cv::Mat

11
Andrey Kamaev

Consultez la documentation Mat .

// converts old-style IplImage to the new matrix; the data is not copied by default
Mat(const IplImage* img, bool copyData=false);
5
Safir
  • cv :: Mat ou Mat, les deux sont identiques.

  • Mat a un opérateur CvMat () donc une affectation simple fonctionne

Convertir Mat en CvMat

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

Convertir CVMat en Mat

Mat dst = Mat(cvmat, true);  

Convertir Mat en IplImage *

> Pour un canal unique

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

> Pour trois canaux

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

J'espère que cela vous aidera. À votre santé :)

4
Abc