2012-07-21 11 views
7

W poniższym kodzie DestroyWindow lub DestroyAllWindows nie można zamknąć okna otwartego przez ShowImage. Kiedy próbowałem go zamknąć, klikając przycisk zamykania, okno zawieszone. Po zabiciu okna cały IDLE zamknął się.OpenCV DestroyWindow nie działa w systemie Ubuntu. Jak poprawnie zamknąć okno?

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

Używam OpenCV 2.4.2 z Pythona 2.7 na Ubuntu 12.04 LTS.

Czy zrobiłem coś złego i jak mogę zamknąć okno tworzyć przez ShowImage?

+0

Czy znaleźć rozwiązanie dla tego lub otwarty błąd? Jestem poważnie zmęczony zajmowaniem się problemami OpenCV na Linuksie. – elaRosca

+1

Zobacz to pytanie: http://stackoverflow.com/questions/6116564 –

Odpowiedz

2

Wierzę, że cv.WaitKey powinien zostać wywołany z liczbą jako argumentem, 0 lub n> 0, gdzie n> 0 określa liczbę milisekund do oczekiwania.

cv.WaitKey (0) będzie czekać w nieskończoność na naciśnięcie klawisza, a następnie zwróci znak wejściowy. Naciśnięcie przycisku klawiatury powinno zamknąć okno, jeśli jeszcze tego nie próbowałeś.

+2

Dzięki za porady. Ale niezależnie od tego, czy zmienię WaitKey() na WaitKey (0) czy WaitKey (1), okno pozostało takie samo. Ten sam kod działa również pod Windows 7. Zastanawiam się, czy OpenCV ma swój unikalny sposób tworzenia i zamykania okna w systemie Ubuntu? Czy OpenCV nie obsługuje najnowszego systemu Ubuntu 12.04 LTS? – 123hurray

1

Spróbuj tylko to:

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

Czy możesz wyjaśnić, co to będzie robić? Z [docs] (http://opencv.willowgarage.com/documentation/python/user_interface.html#waitkey) rozumiem, że będzie czekać na naciśnięcie klawisza przez 27 milisekund, a następnie zwróci -1 (lub kod). Dlaczego porównywać "c" do 27 zamiast bardziej opisowej stałej nazwy dla tego kodu? –

Powiązane problemy