Ich versuche ein Gesicht in einem gif-Bild zu erkennen, aber da OpenCV Gif-Formate nicht unterstützt, habe ich PIL-Modul verwendet, um das zu lesen gif-Bild und wandle es wieder in ein numpy Array um OpenCV zu benutzen. Aber damit bekomme ich einen Assertionsfehler.Programmbegegnungen OpenCV Fehler: Assertion fehlgeschlagen (scn == 3 || scn == 4)
Hier ist mein Code unten
import cv2
import numpy as np
from PIL import Image
# get the features and pass it to the Cascade Classifier
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# read the image
img = Image.open("mypic.sleepy")
# check if image exists
if img is None:
raise Exception("could not load image !")
# represent the image in matrix format for the OpenCV to work on it
img = np.array(img)
# convert it to gray scale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# detect the objects resembling faces
faces = face_cascade.detectMultiScale(gray,1.5,3) #(image,scale_factor, minm_no_of_neighbours)
for face in faces:
# the detected face is represented in the form of a rectangle
x, y, w, h = face
# draw a rectangle on the face in the image
cv2.rectangle(img, (x,y), (x + w, y + h), (0, 255, 0), 2)
# show the image
cv2.imshow("Detected Faces", img)
# hold the window
cv2.waitKey(0)
# destroy all windows
cv2.destroyAllWindows()
Dies ist der Fehler, den ich
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/souvik/opencv-3.3.0/modules/imgproc/src/color.cpp, line 10638
Die übliche Empfehlung, die ich im Internet gefunden habe Begegnung ist, dass das Bild nicht geladen wird, und das ist, warum es wirft solcher Fehler aber klar in meinem Fall ist das Bild in der Tat geladen sonst würde mein Code eine Ausnahme auslösen.Also, wenn ich versuche, diesen Code
print(img.shape)
zu starten 10
Ich bekomme einen Wert von (243, 320)
. Wo gehe ich falsch?
Das Bild, das Sie laden, ist bereits Graustufen (einzelner Kanal). Keine Notwendigkeit, ** in Graustufen zu konvertieren – Miki
@Miki Sie hatten Recht und ich ersetzte es durch ein farbiges Gif-Bild, aber das Problem besteht immer noch! –
Das GIF ist wahrscheinlich farbgemischt, d. H. Einkanalig. Verwenden Sie eine farbige PNG, JPG oder im Grunde alles andere als gif – Miki