Ich bin derzeit in Ubuntu 14.04 und verwende Python 2.7 und CV2.
Wenn ich diesen Code ausführe:
import numpy as np
import cv2
img = cv2.imread('2015-05-27-191152.jpg',0)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
es gibt zurück:
File "face_detection.py", line 11, in <module>
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: /home/arthurckl/Desktop/opencv-3.0.0-rc1/modules/imgproc/src/color.cpp:7564: error: (-215) scn == 3 || scn == 4 in function cvtColor
Ich habe hier bereits gesucht und eine Antwort besagte, dass ich mein Foto möglicherweise falsch laden könnte, da es drei Dimensionen haben sollte: Zeilen, Spalten und Tiefe.
Wenn ich die img.shape drucke, werden nur zwei Zahlen zurückgegeben, also muss ich es falsch machen. Aber ich weiß nicht, wie ich mein Foto richtig laden soll.
img = cv2.imread('2015-05-27-191152.jpg',0)
Der Parameter 0 lädt Ihr Bild bereits als 1-Kanal-Graustufenbild. Versuchen Sie es alsoimg = cv2.imread('2015-05-27-191152.jpg')
odergray = cv2.imread('2015-05-27-191152.jpg',0)
sehen Sie sich verschiedene Flags an: docs.opencv.org/modules/highgui/doc/….../eclipse\ footage/...
) auf meinem Weg hatte. Das Hinzufügen eines...,0)
hat das Problem also nicht behoben.Antworten:
Geben Sie den vollständigen Bildpfad mit Schrägstrich an. Es hat den Fehler für mich gelöst.
Z.B
Wenn Sie
0
beim Laden eines Bildes mit den Namen einen zweiten Parameter eingeben,cv2.imread
ohne dass ein Bild mit konvertiert werden musscvtColor
, wird es bereits als Graustufenbild geladen, z.quelle
Bitte wie unten einstellen
quelle
In der obigen Codezeile wird Ihr Bild im Graustufen-Farbmodell gelesen, da am Ende die 0 angehängt ist. Wenn Sie erneut versuchen, ein bereits graues Bild in ein graues Bild umzuwandeln, wird dieser Fehler angezeigt.
Verwenden Sie entweder den obigen Stil oder versuchen Sie es mit dem unten genannten Code:
quelle
Geben Sie nur den Namen des Bildes ein, ohne dass Folgendes erforderlich ist
0
:quelle
Als erstes sollten Sie überprüfen, ob das Image im Stammverzeichnis vorhanden ist oder nicht. Dies ist hauptsächlich auf ein Bild mit einer Höhe von 0 zurückzuführen. Dies bedeutet, dass
cv2.imread(imageName)
das Bild nicht gelesen wird.quelle
cv2.cvtColor
leeres Bild zu erstellen, der gleiche Fehler angezeigt .Diese Fehlermeldung wurde aus völlig unabhängigen Gründen mit den in den anderen Antworten genannten Flags 0 oder 1 angezeigt. Man könnte es auch sein zu sehen , da
cv2.imread
wird nicht Fehler aus , wenn der Pfad Zeichenfolge Sie es passieren kein Bild ist:Sie sehen also einen
cvtColor
Fehler, wenn es sich tatsächlich um einen stillenimread
Fehler handelt. Denken Sie daran, wenn Sie das nächste Mal eine Stunde Ihres Lebens mit dieser kryptischen Metapher verschwenden .Lösung
Möglicherweise müssen Sie überprüfen, ob Ihre Pfadzeichenfolge eine gültige Datei darstellt, bevor Sie sie an
cv2.imread
folgende Adresse übergeben :Auf diese Weise geschrieben, schlägt Ihr Code ordnungsgemäß fehl.
quelle
Diese Antwort gilt für Personen, bei denen das gleiche Problem beim Zugriff auf die Kamera auftritt.
Verwenden von Linux:
Wenn Sie versuchen, von Ihrem Computer aus auf die Kamera zuzugreifen, liegt höchstwahrscheinlich ein Berechtigungsproblem vor. Versuchen Sie, das Python-Skript mit sudo auszuführen, damit es behoben wird.
Führen Sie den folgenden Befehl aus, um zu testen, ob auf die Kamera zugegriffen werden kann.
quelle
Der obige Fehler ist das Ergebnis eines ungültigen Bildnamens oder wenn die Datei nicht im lokalen Verzeichnis vorhanden ist.
Auch wenn Sie das 2. Argument von cv2.imread () als '0' verwenden, wird es bereits in ein Graustufenbild konvertiert.
Der Unterschied zwischen der Konvertierung des Bildes durch Übergabe von 0 als Parameter und der Anwendung des Folgenden:
ist, dass in dem Fall
img = cv2.cvtCOLOR(img, cv2.COLOR_BGR2GRAY)
die Bilder Bilder vom Typ 8uC1 und 32sC1 sind.quelle
Dieser Code für diejenigen, die das gleiche Problem beim Zugriff auf die Kamera haben, könnte mit einer Sicherheitsüberprüfung geschrieben werden.
ODER falls Sie die Kamera schließen / abbrechen möchten, wenn ein Problem mit dem Rahmen selbst auftritt
Als Referenz https://github.com/HackerShackOfficial/AI-Smart-Mirror/issues/36
quelle
Folgendes habe ich beobachtet, als ich meine eigenen Bildsätze im
.jpg
Format verwendet habe. Im Beispielskript in OpenCV doc , beachten Sie, dass es die hatundistort
undcrop the image
Zeilen wie folgt:Wenn wir den Code zum ersten Mal ausführen, wird die Zeile ausgeführt
cv2.imwrite('calibresult.jpg',dst)
,calibresult.jpg
in der ein Bild im aktuellen Verzeichnis gespeichert wird. Als ich den Code zum nächsten Mal zusammen mit meinen Beispielbildsätzen ausführte, die ich zum Kalibrieren der Kamera im JPG-Format verwendet habe, versuchte der Code auch, dieses neu hinzugefügte Bild zu berücksichtigen,calibresult.jpg
aufgrund dessen der Fehler auftratWas ich getan habe war: Ich habe einfach das neu generierte Bild nach jedem Lauf gelöscht oder alternativ den Typ des Bildes geändert, um es zu sagen
png
oder zutiff
tippen. Das hat das Problem gelöst. Überprüfen Sie, ob Siecalibresult
denselben Typ eingeben und schreiben . Wenn ja, ändern Sie einfach den Typ.quelle
Unter OS XI wurde erkannt, dass cv2.imread zwar mit "filename.jpg" umgehen kann, "file.name.jpg" jedoch nicht verarbeiten kann. Als Anfänger in Python kann ich noch keine Lösung vorschlagen, aber wie François Leblanc schrieb, handelt es sich eher um einen stillen Fehler.
Es gibt also ein Problem mit einem zusätzlichen Punkt im Dateinamen und wahrscheinlich auch mit anderen Zeichen, wie mit "" (Leerzeichen) oder "%" und so weiter.
quelle
Ich habe auch festgestellt, dass CV2 denselben Fehler ausgibt, wenn Ihre Webcam nicht richtig geschlossen wurde oder etwas verwendet wird. Ich musste meinen PC neu starten, damit er wieder funktioniert.
quelle
Die einfachste Lösung zum Entfernen dieses Fehlers war das Ausführen des Befehls
Das hat bei mir funktioniert und manchmal war auch ein Neustart des Kernels erforderlich, da alte Prozesse im Hintergrund ausgeführt wurden.
Wenn sich das Bild nicht im Arbeitsverzeichnis befindet, funktioniert es auch nicht. Versuchen Sie, die Bilddatei in pwd in demselben Ordner abzulegen, in dem sich Code befindet. Andernfalls geben Sie den vollständigen Pfad zur Bilddatei oder zum Ordner an.
Um dieses Problem in Zukunft zu vermeiden, versuchen Sie, mit außergewöhnlicher Handhabung zu codieren, damit das Erfassungsgerät nach dem Ende des Programms freigegeben wird, wenn aus irgendeinem zufälligen Grund eine falsche Beendigung auftritt.
quelle
2015-05-27-191152.jpg << Wenn ich auf Ihr Bildformat zurückblicke, habe ich gelegentlich zwischen .png und .jpg verwechselt und bin auf denselben Fehler gestoßen.
quelle
Ich denke , es denn
cv2.imread
nicht gelesen.jpg
Bild, das Sie ändern müssen.jpg
zu.png
.quelle