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 :)