2011-06-03 10 views
5

Estoy usando enlaces de python openCV. Estoy tratando de mostrar la imagen de salida usando la siguiente lista:No se pueden mostrar las ventanas de visualización de la imagen en openCV

cv.NamedWindow('display') 
cv.MoveWindow('display', 10, 10) 
cv.ShowImage('display', cvImage) 

Pero no veo ninguna ventana.

Mi plataforma es Linux (openSuse 11.4), python-opencv versión 2.1 y python 2.7.

+0

En una nota lateral, puede considerar PyOpenCV, es una encuadernación de Python algo más valiosa. – susmits

+0

@susmits gracias :) Sin embargo, no está disponible con distro repos. Instalación solo desde la fuente – Xolve

+0

Este problema aparece en Linux, pero no en los sistemas de Windows (al menos no en Win 7). En Windows 7 'cv.NamedWindow ('...')' muestra ventana de inmediato, incluso sin 'cv.WaitKey()' –

Respuesta

11

Debe llamar a la función WaitKey para procesar los eventos. Echa un vistazo a la documentación: http://opencv.willowgarage.com/documentation/python/highgui_user_interface.html#waitkey

Esta función es el único método en HighGUI que puede traer y controlar los eventos, por lo que debe ser llamado periódicamente para procesamiento de eventos normales, a menos que HighGUI se utiliza dentro de algún entorno que se encarga de procesamiento de eventos.

Simplemente agregue un WaitKey (0) al final de su código y debería funcionar bien.

+0

Gracias que funcionó :) Ahora me enfrenta otro problema: no puedo matar a la ventana sin matarla. DestroyWindow() no parece funcionar. – Xolve

+4

Tendrá que bombear eventos una vez que haya destruido una ventana. Inmediatamente después de una llamada a DestroyWindow ('display'), agregue WaitKey (1). Eso hará que espere un milisegundo, lo que es imperceptible, y se deshará de la ventana. – susmits

+0

Eso funcionó, gracias :) Quiero señalar que la funcionalidad de la interfaz gráfica de usuario de openCV no es tan buena. A menudo es mejor guardar la imagen en un archivo temporal y abrir la imagen en el visor externo. – Xolve

0

Además de esta información: WaitKey (1) no espera 1ms pero por lo menos 15ms ... puede medir eso si lo desea.

+1

Específicamente, esto dependerá de plataforma a plataforma. En Windows, por ejemplo, no es posible esperar menos del tiempo que lleva realizar una bomba del ciclo de mensajes. – susmits

Cuestiones relacionadas