OpenCV Python: Comment détecter si une fenêtre est fermée?

J'ai le code suivant:

total_frames = 50
cv2.cv.NamedWindow("Dragonfly Simulation")
cv2.cv.StartWindowThread()
for i in range(total_frames):
    # do stuff
    img_name = # something
    img = cv2.cv.LoadImage(img_name)
    cv2.cv.ShowImage("Dragonfly Simulation", img)
    cv2.cv.WaitKey(2)
cv2.cv.DestroyWindow("Dragonfly Simulation")
cv2.cv.WaitKey(1)
# rest of code

Alors que faut-il faire:

  1. Ouvre une fenêtre
  2. Dans une boucle, montre une image sur la fenêtre
  3. Une fois terminé, ferme la fenêtre
  4. Exécute le reste du code

Toutefois, dans ce cas, j'ai le total_frame donné avant. Je n'en veux pas.

Au lieu de cela, je veux un code qui effectue les opérations suivantes:

  1. Ouvre une fenêtre
  2. Dans une boucle, montre une image sur la fenêtre
  3. Attend à l'utilisateur de fermer cette fenêtre
  4. Lorsque l'utilisateur ferme la fenêtre, à la sortie de la boucle, se poursuit avec le reste du code.

Cependant, je ne peux pas trouver une fonction dans OpenCV qui permet de détecter quand l'utilisateur ferme une fenêtre. Quelqu'un peut-il suggérer une solution s'il vous plaît?

Peut-être il y a quelques exceptions que vous pouvez attraper? Par exemple, essayez d'accès de la fenêtre, si elle ne parvient pas à NoWindowExistsException/NullPointerException puis aller avec votre code.
euh, désolé, je suis nouveau sur OpenCV, comment puis-je vérifier l'exception? avec mon code actuel, si je ferme la fenêtre, le code s'arrête. aussi, dans le manuel de ShowImage: "Si la fenêtre n'a pas été créé avant cette fonction, il est supposé la création d'une fenêtre avec CV_WINDOW_AUTOSIZE"
Je ne suis pas familier avec OpenCV. J'ai juste pensé que l'instance va rester après la fermeture de la Fenêtre. C'est peut-être ce que vous recherchez? Pour stocker une référence de cv à l'échelle mondiale afin d'y avoir accès, peu importe si la Fenêtre est fermée? Je suis juste spéculer.
euh je suis la modélisation d'un neurone de la simulation, donc je veux exécuter la simulation, tant que l'utilisateur le souhaite (au lieu d'une durée de temps spécifiée ou le nombre de frames). Donc en voulant détecter lorsque l'utilisateur ferme la fenêtre. Je suppose que sinon je pouvais détecter de frappe sur le clavier? pas entièrement sûr de savoir comment faire si...
Pouvez-vous fermer la fenêtre au cours de la boucle?

OriginalL'auteur dessskris | 2016-01-25