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
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
Il metodo consigliato è il cv::cvarrToMat
funzione
cv::Mat
- è la struttura base dati per OpenCV 2.x
CvMat
- è vecchio C analogica cv::Mat
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);
Questo costruttore verrà completamente rimosso dall'API in il prossimo importante aggiornamento della libreria –
@AndreyKamaev Ne sei sicuro? Questo costruttore non dovrebbe essere contrassegnato come deprecato allora? – Antonio
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.
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 :)
Per quanto riguarda cvMat e Mat, vedere il collegamento: http://stackoverflow.com/questions/11037798/difference-between-cvmat-mat-and-ipimage – Barshan