OpenCV en Python proporciona un método cv2.getWindowProperty() para detectar si una ventana está cerrada o abierta. getWindowProperty() devuelve -1 si todas las ventanas están cerradas. Este es uno de los principales problemas que enfrentamos al usar el paquete OpenCV, a veces es difícil detectar si la ventana está abierta o cerrada. cuando un usuario cierra la ventana, el método lo detecta.
Sintaxis: cv2.getWindowProperty(nombre_ventana, propiedad_ventana)
parámetros:
- window_name : es el nombre de la ventana.
- window_property : es la propiedad de la ventana a recuperar. usamos banderas.
banderas que podemos usar:
- cv.2WND_PROP_VISIBLE: comprueba si la ventana está visible y abierta.
- cv2.WND_PROP_TOPMOST
- cv2.WND_PROP_OPENGL
- cv2.WND_PROP_ASPECT_RATIO
- cv2.WND_PROP_AUTOSIZE
- cv.WND_PROP_FULLSCREEN
Acercarse
- Leemos una imagen y luego la mostramos, el nombre de la ventana también se especifica en el método cv2.imshow() .
- Luego usamos un bucle while para esperar hasta que el usuario presione ESC (tecla de salida) para destruir todas las ventanas. Después de que se destruye la ventana, el bucle se rompe.
- Hacemos una verificación final para ver si la ventana está cerrada usando getWindowProperty(), que toma el nombre de la ventana y la bandera como parámetros.
- Si la ventana está cerrada, el método devuelve -1.
En el siguiente código, cuando se cierra la ventana, devuelve -1. aunque la ventana está cerrada, a veces python no responde, al usar waitkey(1) se cierra la ventana al instante.
Python3
# importing packages import cv2 # reading image img = cv2.imread('sunset.jpeg') cv2.imshow('sunset', img) while True: # it waits till we press a key key = cv2.waitKey(0) # if we press esc if key == 27: print('esc is pressed closing all windows') cv2.destroyAllWindows() break if cv2.getWindowProperty('sunset', cv2.WND_PROP_VISIBLE) < 1: print("ALL WINDOWS ARE CLOSED") cv2.waitKey(1)
Producción:
esc is pressed closing all windows ALL WINDOWS ARE CLOSED -1
Publicación traducida automáticamente
Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA