2013-04-10 14 views
18

Ho cercato di convertire un IplImage * in Mat, ma tutte le risposte riguardavano la conversione in cvMat.Conversione da IplImage * a cv :: MAT

Come, posso farlo? e qual è la differenza tra Mat e cvMat?

Grazie in anticipo

+0

Per quanto riguarda cvMat e Mat, vedere il collegamento: http://stackoverflow.com/questions/11037798/difference-between-cvmat-mat-and-ipimage – Barshan

risposta

13

qui è una buona soluzione

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

afaik più recenti Le versioni OpenCV (3.x) non supportano più questo costruttore. – Micka

+0

È passato molto tempo quindi :) –

+0

a questa domanda è stata collegata una domanda, quindi volevo solo dirlo :) – Micka

11

Il metodo consigliato è il cv::cvarrToMat funzione

cv::Mat - è la struttura base dati per OpenCV 2.x

CvMat - è vecchio C analogica cv::Mat

4

Verifica fuori il Mat documentation.

// converts old-style IplImage to the new matrix; the data is not copied by default 
Mat(const IplImage* img, bool copyData=false); 
+2

Questo costruttore verrà completamente rimosso dall'API in il prossimo importante aggiornamento della libreria –

+0

@AndreyKamaev Ne sei sicuro? Questo costruttore non dovrebbe essere contrassegnato come deprecato allora? – Antonio

28

Per la cronaca: dare un'occhiata a core/src/matrix.cpp sembra che, in effetti, il costruttore cv::Mat(IplImage*) è scomparso.

Ma ho trovato questa alternativa:

IplImage * ipl = ...; 
cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don't copy data. 
4
  • cv :: Mat Mat o, entrambi sono uguali.

  • Mat ha una CvMat operatore() in modo semplice assegnazione funziona Mat

Converti in CvMat

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

Converti CVMat a Mat

Mat dst = Mat(cvmat, true); 

Converti Mat a IplImage *

> Per Single Channel

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

> Per tre canali

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

Spero che questo ti aiuta. Applausi :)

Problemi correlati