57 votes

DestroyWindow ne ferme pas la fenêtre sur Mac en utilisant Python et OpenCV

Mon programme génère une série de fenêtres en utilisant le code suivant :

 def display(img, name, fun):
    global clicked

    cv.NamedWindow(name, 1)
    cv.ShowImage(name, img)
    cv.SetMouseCallback(name, fun, img)

    while cv.WaitKey(33) == -1:
        if clicked == 1:
            clicked = 0
            cv.ShowImage(name, img)

    cv.DestroyWindow(name)

J'appuie sur "q" dans la fenêtre de l'interface graphique pour la fermer. Cependant, le code continue jusqu'à l'appel suivant de la fonction d'affichage et affiche une deuxième fenêtre d'interface graphique sans fermer la première. J'utilise un Mac avec OpenCV 2.1, exécutant le programme dans Terminal. Comment puis-je fermer les fenêtres de l'interface graphique ? Merci.

11voto

Hassan Alshehri Points 41

Voici ce qui a fonctionné pour moi:

 cv2.namedWindow("image")
cv2.imshow('image', img)
cv2.waitKey(0) # close window when a key press is detected
cv2.destroyWindow('image')
cv2.waitKey(1)

6voto

Marco Centin Points 61

Cette solution fonctionne pour moi (sous Ubuntu 12.04 avec python ouvert dans le shell):

Ré-invoquez cv.ShowImage après que la fenêtre soit « détruite ».

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X