2012-07-21 10 views
7

En el siguiente código, DestroyWindow o DestroyAllWindows no pueden cerrar la ventana abierta por ShowImage. Cuando intenté cerrarlo haciendo clic en el botón de cerrar, la ventana se suspendió. Después de matar la ventana, todo el IDLE se cerró.OpenCV DestroyWindow no funciona en Ubuntu. ¿Cómo cerrar una ventana correctamente?

import cv 
image = cv.LoadImage("../lena.bmp", 0) 
cv.NamedWindow("test") 
cv.ShowImage("test", image) 
cv.WaitKey() 
cv.DestroyWindow("test") #or cv.DestroyAllWindows() 

Estoy usando OpenCV 2.4.2 con Python 2.7 en Ubuntu 12.04 LTS.

¿Hice algo mal y cómo puedo cerrar la ventana creada por ShowImage?

+0

¿Ha encontrado una solución para esto o se abre un error? Estoy muy cansado de lidiar con problemas de OpenCV en Linux. – elaRosca

+1

Ver esta pregunta: http://stackoverflow.com/questions/6116564 –

Respuesta

2

Creo que debe llamarse a cv.WaitKey con un número como argumento, ya sea 0 o n> 0, donde n> 0 especifica el número de milisegundos que debe esperar.

cv.WaitKey (0) esperará indefinidamente para presionar el teclado, y luego devolver la entrada de caracteres. Presionar un botón del teclado debería cerrar la ventana, si aún no lo has intentado.

+2

Gracias por su consejo. Pero sea lo que sea que cambie WaitKey() a WaitKey (0) o WaitKey (1), la ventana sigue siendo la misma. El mismo código funciona bien en Windows 7. Me pregunto si OpenCV tiene su forma única de crear y cerrar una ventana en Ubuntu. ¿O OpenCV no es compatible con el nuevo sistema Ubuntu 12.04 LTS? – 123hurray

1

intente Es esto:

c = cv.WaitKey(27) 
if c == 27: 
    cv.DestroyAllWindows("Test") 
    break 
+2

¿Puedes explicarme qué hará esto? Desde [docs] (http://opencv.willowgarage.com/documentation/python/user_interface.html#waitkey) entiendo que esto esperará una pulsación de tecla durante 27 milisegundos, luego devuelva -1 (o el código clave). ¿Por qué comparar 'c' con 27 en lugar de un nombre constante más descriptivo para ese código clave? –