Ich verwende opencv 2.4.2, Python 2.7. Der folgende einfache Code hat ein Fenster mit dem richtigen Namen erstellt, dessen Inhalt jedoch nur leer ist und das Bild nicht anzeigt:
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
Kennt jemand dieses Problem?
python
opencv
image-processing
top.eng
quelle
quelle
Antworten:
imshow()
funktioniert nur mitwaitKey()
:(Die gesamte Nachrichtenschleife, die zum Aktualisieren des Fensters erforderlich ist, ist dort versteckt.)
quelle
print img
druckt ein korrektes numpy-Array, keinNoneType
Objekt.Die Antwort, die für mich funktioniert hat, habe ich hier gefunden: http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html
quelle
Sie müssen
cv2.waitKey(0)
nach verwendencv2.imshow("window",img)
. Nur dann wird es funktionieren.quelle
Wenn Sie in einer Python-Konsole ausgeführt werden, gehen Sie folgendermaßen vor:
Wenn Sie dann Enterauf das Bild drücken , wird das Bild erfolgreich geschlossen und Sie können andere Befehle ausführen.
quelle
Ich stand vor dem gleichen Problem. Ich habe versucht, ein Bild aus IDLE zu lesen und es mit anzuzeigen
cv2.imshow()
, aber das Anzeigefenster friert ein und wird angezeigtpythonw.exe
nicht an, wenn versucht wird, das Fenster zu schließen.Der folgende Beitrag gibt eine mögliche Erklärung dafür, warum dies geschieht
pythonw.exe antwortet nicht
" Tun Sie dies grundsätzlich nicht in IDLE. Schreiben Sie ein Skript und führen Sie es direkt in der Shell oder im Skript aus, indem Sie es mit einer .pyw-Erweiterung benennen und darauf doppelklicken. Es besteht anscheinend ein Konflikt zwischen dem IDLE-eigenen Ereignis Schleife und diejenigen aus GUI-Toolkits. "
Wenn ich
imshow()
ein Skript verwendet und ausgeführt habe, anstatt es direkt über IDLE auszuführen, hat es funktioniert.quelle
cv2.waitKey(0)
am Ende hinzufügen .quelle
Bei mir hat waitKey () mit einer Nummer größer als 0 funktioniert
quelle
Sie haben alle notwendigen Teile irgendwo in diesem Thread:
funktioniert gut für mich in IDLE.
quelle
Wenn Sie dies nicht zum Laufen gebracht haben, sollten Sie es besser sagen
in eine Datei und führen Sie es aus.
quelle
Benötigt keine zusätzlichen Methoden nach
waitKey(0)
(Antwort für obigen Code)Fenster erscheint -> Klicken Sie auf das Fenster und klicken Sie auf Enter. Das Fenster wird geschlossen.
quelle
Wenn Sie "cv2.waitKey (0)" verwenden, stellen Sie sicher, dass Sie "cv2.waitKey (0)" anstelle von "cv2.waitkey (0)" geschrieben haben, da dieses Kleinbuchstaben "k" möglicherweise auch Ihr Programm einfriert .
quelle
Ich hatte auch einen -215 Fehler. Ich dachte, imshow sei das Problem, aber als ich imread geändert habe, um eine nicht vorhandene Datei einzulesen, habe ich dort keinen Fehler erhalten. Also habe ich die Bilddatei in den Arbeitsordner gelegt und cv2.waitKey (0) hinzugefügt und es hat funktioniert.
quelle
Dieser Fehler wird erzeugt, weil das Bild nicht gefunden wird. Es ist also kein Fehler der Imshow-Funktion.
quelle
Ich hatte den gleichen Fehler, den ich überwinden konnte, indem ich den vollständigen Pfad zum Bild wie in C: \ Folder1 \ Folder2 \ filename.ext angegeben habe
quelle