Używam opencv 2.4.2, python 2.7 Poniższy prosty kod utworzył okno o poprawnej nazwie, ale jego zawartość jest po prostu pusta i nie pokazuje obrazu:
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
czy ktoś wie o tym problemie?
python
opencv
image-processing
top.eng
źródło
źródło
Odpowiedzi:
imshow()
działa tylko zwaitKey()
:(Cała pętla komunikatów potrzebna do aktualizacji okna jest tam ukryta).
źródło
print img
wypisuje poprawną tablicę numpy, a nieNoneType
obiekt.Znalazłem odpowiedź, która mi pomogła : http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html
źródło
Musisz użyć
cv2.waitKey(0)
późniejcv2.imshow("window",img)
. Tylko wtedy to zadziała.źródło
Jeśli korzystasz z konsoli Pythona, zrób to:
Następnie, jeśli naciśniesz Enterna obraz, pomyślnie zamkniesz obraz i możesz kontynuować uruchamianie innych poleceń.
źródło
Miałem ten sam problem. Próbowałem odczytać obraz z IDLE i próbowałem go wyświetlić
cv2.imshow()
, ale okno wyświetlacza zawiesza się i pokazujepythonw.exe
nie reagują podczas próby zamknięcia okna.Poniższy post zawiera możliwe wyjaśnienie, dlaczego tak się dzieje
pythonw.exe nie odpowiada
„ Zasadniczo nie rób tego z IDLE. Napisz skrypt i uruchom go z powłoki lub skryptu bezpośrednio w systemie Windows, nadając mu nazwę z rozszerzeniem .pyw i klikając dwukrotnie. Najwyraźniej występuje konflikt między własnym zdarzeniem IDLE loop i te z zestawów narzędzi GUI. "
Kiedy użyłem
imshow()
w skrypcie i wykonałem go, zamiast uruchamiać go bezpośrednio przez IDLE, zadziałało.źródło
dodaj
cv2.waitKey(0)
na końcu.źródło
U mnie waitKey () o numerze większym niż 0 zadziałało
źródło
Masz gdzieś w tym wątku wszystkie potrzebne elementy:
działa dobrze dla mnie w IDLE.
źródło
Jeśli nie sprawiłeś, że to zadziałało, lepiej to załóż
do jednego pliku i uruchom go.
źródło
Nie potrzebuje żadnych dodatkowych metod po
waitKey(0)
(odpowiedz na powyższy kod)Pojawi się okno -> Kliknij okno i kliknij Enter. Okno się zamknie.
źródło
Metoda 1:
Poniższy kod zadziałał dla mnie. Samo dodanie niszczącej wszystkich okien () nie zamknęło okna. Dodanie kolejnego cv2.waitKey (1) na końcu załatwiło sprawę.
kredyt: https://stackoverflow.com/a/50091712/8109630
Uwaga dla początkujących:
Metoda 2:
Jeśli chcesz wyświetlić na notebooku Jupyter.
źródło
Jeśli zdecydujesz się użyć „cv2.waitKey (0)”, upewnij się, że napisałeś „cv2.waitKey (0)” zamiast „cv2.waitkey (0)”, ponieważ ta mała litera „k” może również spowodować zawieszenie programu .
źródło
Miałem też błąd -215. Myślałem, że problemem jest imshow, ale kiedy zmieniłem imread na odczyt w nieistniejącym pliku, nie widziałem błędu. Więc umieściłem plik obrazu w folderze roboczym i dodałem cv2.waitKey (0) i zadziałało.
źródło
Ten błąd jest generowany, ponieważ nie znaleziono obrazu. Więc to nie jest błąd funkcji imshow.
źródło
Miałem ten sam błąd 215, który udało mi się przezwyciężyć podając pełną ścieżkę do obrazu, jak w C: \ Folder1 \ Folder2 \ filename.ext
źródło