2011-05-30 30 views
5

en mi aplicación tengo un archivo Mat, que me gustaría mostrar en una ventana con cvShowImage que se define como:Convertir a IplImage * en OpenCV y C/C++

void cvShowImage(const char* name, const CvArr* image) 

Ahora, el problema es que si me pasa directamente a la imagen estera, me da una conversión de error:

cannot convert 'cv::Mat' to 'const CvArr*' for argument '2' to 'void cvShowImage(const char*, const CvArr*)' 

he probado a buscar en este foro para alguien con el mismo problema y me encontré con esta documentación OpenCV: http://opencv.willowgarage.com/documentation/cpp/c++_cheatsheet.html

Pero no entendí cómo usarlo.

¿Puede alguien darme un ejemplo de cómo convertir la imagen Mat a IplImage, por favor?

Este es mi código:

Mat file; 
Mat hogResultFrame = hogStep(temp2); 
file = hogResultFrame; 

    cvShowImage(window_title, (const CvArr*)(file)); 

pero me da una coversion error.

espero que me puedan ayudar,

muchas gracias!

Respuesta

6

¿Por qué intenta utilizar la interfaz C con los tipos de datos C++? Use la interfaz C++.

cv::namedWindow(window_title, 1); 
cv::imshow(window_title, file); 
+0

+1 Exactamente lo que iba a decir. – karlphillip

+0

¡Muchas gracias! Creo que es la mejor solución para mi caso –

+0

incluso, namedWindow no es realmente necesario. Algunos incluso tienen problemas con él en algunas plataformas. –

1

Prueba esto:

IplImage image = file; 
cvShowImage(window_title, &image); 

cierto. Tal vez sería mejor utilizar las funciones de C++ OpenCV para mostrar imágenes, debería ser más fácil y no te preocupará si has limpiado toda la memoria asignada o no (es bueno echar un vistazo al código de muestra aquí: http://opencv.willowgarage.com/documentation/cpp/introduction.html).

+0

También probé esta solución, pero estoy usando consejos etarion porque es un poco más rápido. –

Cuestiones relacionadas