2012-07-21 8 views
7

Nel seguente codice, DestroyWindow o DestroyAllWindows non possono chiudere la finestra aperta da ShowImage. Quando ho provato a chiuderlo facendo clic sul pulsante di chiusura, la finestra è stata sospesa. Dopo aver ucciso la finestra, l'intero IDLE è stato chiuso.OpenCV DestroyWindow non funziona su Ubuntu. Come chiudere una finestra correttamente?

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

Sto usando OpenCV 2.4.2 con Python 2.7 su Ubuntu 12.04 LTS.

Ho fatto qualcosa di sbagliato e come posso chiudere la finestra creata da ShowImage?

+0

Hai trovato una soluzione per questo o ha aperto un bug? Sono seriamente stanco di gestire i problemi di OpenCV su Linux. – elaRosca

+1

Vedere questa domanda: http://stackoverflow.com/questions/6116564 –

risposta

2

Credo che cv.WaitKey debba essere chiamato con un numero come argomento, 0 o n> 0, dove n> 0 specifica il numero di millisecondi da attendere.

cv.WaitKey (0) aspetterà indefinitamente per una pressione della tastiera, quindi restituirà l'immissione di caratteri. Premendo un tasto della tastiera dovrebbe chiudere la finestra, se non l'hai già provato.

+2

Grazie per il vostro consiglio. Ma qualunque cosa cambi WaitKey() in WaitKey (0) o WaitKey (1), la finestra è rimasta la stessa. Lo stesso codice funziona bene con Windows 7. Mi chiedo se OpenCV ha il suo modo unico di creare e chiudere una finestra con Ubuntu? O OpenCV non supporta il nuovissimo sistema Ubuntu 12.04 LTS? – 123hurray

1

provare solo questo:

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

Puoi spiegare cosa farà? Da [docs] (http://opencv.willowgarage.com/documentation/python/user_interface.html#waitkey) capisco che aspetterà una pressione di un tasto per 27 millisecondi, quindi restituirà -1 (o il keycode). Perché confrontare 'c' a 27 invece di un nome costante più descrittivo per quel keycode? –

Problemi correlati