OpenCV Python: ¿Cómo detectar si una ventana está cerrada?

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *