cv2.imread: Überprüfen, ob Bild gelesen wird

8

Ich schreibe ein OpenCV-Programm in Python, und irgendwann habe ich etwas wie

%Vor%

Das Problem ist, dass ich feststellen muss, ob die Bilddatei korrekt gelesen wird, bevor ich fortfahre. cv2.imread gibt False zurück, wenn das Bild nicht geöffnet werden kann, daher denke ich an etwas wie:

%Vor%

Wenn das Bild nicht geöffnet wird (z. B. wenn die Datei nicht existiert), ist img gleich None (wie erwartet). Wenn imread jedoch funktioniert, bricht die Bedingung:

%Vor%

d. Das zurückgegebene numpy.ndarray kann nicht als boolescher Wert verwendet werden. Das Problem scheint zu sein, dass imread bei Erfolg numpy.darray zurückgibt und andernfalls False (boolean).

Meine bisherige Lösung beinhaltet die Verwendung von type des zurückgegebenen Wertes wie folgt:

%Vor%

Aber ich habe mich gefragt: Gibt es keine schönere Lösung, näher am ersten Check if(img): #do stuff ?

    
Яois 13.05.2014, 10:07
quelle

2 Antworten

20

Sie können einfach if not img is None oder gleichwertig if img is not None verwenden. Sie müssen den Typ nicht explizit überprüfen.

Beachten Sie, dass None und False nicht denselben Wert haben. % Co_de%, weshalb bool(None)==False fehlschlägt.

    
goncalopp 13.05.2014, 10:12
quelle
2

Wenn Sie den Inhalt schreiben möchten, sobald die Image-Datei erstellt wurde, können Sie os.path.isfile() verwenden, die einen bool -Wert zurückgeben, abhängig vom Vorhandensein einer Datei im angegebenen Verzeichnis.

%Vor%

Sie können sich auch auf Dokumente zur detaillierten Implementierung jeder Methode und grundlegenden Bildoperationen.

    
ZdaR 22.05.2015 22:09
quelle

Tags und Links