library convertto c++ opencv iplimage mat

c++ - convertto - opencv mat library



Conversión de IplImage*a cv:: MAT (5)

Para los registros: echando un vistazo a core / src / matrix.cpp parece que, de hecho, el constructor cv::Mat(IplImage*) ha desaparecido.

Pero encontré esta alternativa:

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

Busqué convertir un IplImage * a Mat, pero todas las respuestas fueron sobre la conversión a cvMat.

¿Cómo puedo hacerlo? y cual es la diferencia entre Mat y cvMat?

Gracias por adelantado


Consulte la documentación de Mat .

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


La forma recomendada es la función cv::cvarrToMat

cv::Mat - es la estructura de datos base para OpenCV 2.x

CvMat - es viejo análogo de CvMat cv::Mat


aquí hay una buena solución

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


  • cv :: Mat o Mat, ambos son iguales.

  • Mat tiene un operador CvMat () por lo que la asignación simple funciona

Convertir Mat a CvMat

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

Convertir CVMat a Mat

Mat dst = Mat(cvmat, true);

Convertir Mat a IplImage *

> Para un solo canal

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

> Para tres canales

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

Espero que esto te ayude. Saludos :)