Fehler: (-215) !empty() in Funktion detectMultiScale

Lesezeit: 5 Minuten

Fehler 215 empty in Funktion detectMultiScale
arthurckl

Ich versuche, cv2 in Python 2.7 zu lernen, aber wenn ich meinen Code ausführe, in dem spezifischen Teil davon:

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
 eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')


img = cv2.imread('2015-05-27-191152.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

es gibt dies zurück:

File "face_detection.py", line 11, in <module>
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
cv2.error: /home/arthurckl/Desktop/opencv-3.0.0-rc1/modules/objdetect/src/cascadedetect.cpp:1595: error: (-215) !empty() in function detectMultiScale

Ich habe versucht, die Antwort hier zu suchen, aber das Beste, was ich finden konnte, ist, dass ich die face_cascade falsch laden muss … Irgendwelche Hilfe?

  • Ihre XML-Datei wurde nicht gefunden. versuchen Sie es mit einem absoluten Pfad wie “/my/files/bla/cacade.xml”

    – Berak

    28. Mai 2015 um 14:09 Uhr


  • @berak Ich habe den ursprünglichen Pfad durch den von Ihnen vorgeschlagenen ersetzt, aber der Code gibt denselben Fehler zurück

    – arthurckl

    28. Mai 2015 um 14:14 Uhr

  • Können Sie überprüfen, ob Ihr Bild nicht leer ist (z. B. wenn es nicht richtig geladen wurde), indem Sie einen Test hinzufügen oder ein Bild anzeigen?

    – Micha

    28. Mai 2015 um 14:53 Uhr

  • Oh, ich verstehe, ich habe den Fila-Pfad falsch geschrieben. Danke für die Hilfe !

    – arthurckl

    29. Mai 2015 um 11:48 Uhr


  • Ich habe das gleiche Problem und egal wie sehr ich es versucht habe, ich konnte es nicht lösen. Kannst du uns sagen, wie du es gelöst hast? @arthurckl

    – aysebilgegunduz

    24. Juli 2017 um 8:25 Uhr


1647603969 74 Fehler 215 empty in Funktion detectMultiScale
Mandelbrot

Ich hatte das gleiche Problem.

Ich musste nichts anderes herunterladen, um das zu lösen. CV2 hatte alles, was ich brauchte.

Anstatt herauszufinden, wo die .xml Dateien sind und die Werte fest codiert sind, habe ich eine von cv2 gegebene Eigenschaft verwendet.

Von OP

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

Wird

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')

  • Dies sollte als richtige Antwort markiert werden, hätte mir Zeit gespart.

    – Joe Albowicz

    13. Mai 2020 um 21:14 Uhr

  • Dies funktionierte perfekt, dies sollte als richtig markiert werden

    – Seaver Olson

    3. August 2020 um 23:49 Uhr

  • Welchen Fehler hast du bei @VIVID erhalten? War es mit cv2.data.haarcascades oder mit cv2.CascadeClassifie?

    – Mandelbrot

    17. August 2020 um 13:15 Uhr

  • @Mandelbrotter Hier ist mein Problem: stackoverflow.com/questions/63423843/…

    – LEBENDIG

    17. August 2020 um 17:40 Uhr

  • Danke, das hat mir wochenlange Kopfschmerzen erspart

    – obadul024

    13. September 2021 um 10:10 Uhr

1647603969 227 Fehler 215 empty in Funktion detectMultiScale
Person

Das XML oder die Datei fehlt oder der Pfad dazu ist falsch oder der create_capture-Pfad ist falsch.

Die Pfade im opencv-Beispiel sehen folgendermaßen aus:

cascade_fn = args.get('--cascade', "../../data/haarcascades/haarcascade_frontalface_alt.xml")
nested_fn  = args.get('--nested-cascade', "../../data/haarcascades/haarcascade_eye.xml")

cam = create_capture(video_src, fallback='synth:bg=../data/lena.jpg:noise=0.05')

Fehler 215 empty in Funktion detectMultiScale
Keerthana Gopalakrishnan

Ich habe den gleichen Code ausgeführt. Hier sind zwei Dinge zu beachten. 1. Geben Sie den vollständigen Pfad der .xml-Dateien an. 2. Geben Sie am Ende eine Tastendruck-Ereignisanweisung.

Fügen Sie diesen Codeblock am Ende hinzu und führen Sie Ihre Datei aus, hat bei mir funktioniert:

k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()

Zum Beispiel sah mein Code so aus

import numpy as np
import cv2

face_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_eye.xml')

img = cv2.imread('lena.jpg')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
#faces = face_cascade.detectMultiScale(gray)

for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex,ey,ew,eh) in eyes:
        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

cv2.imshow('img',img)

k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()

Meine Ausgabe sah so aus:

Ausgang

  • Der absolute Pfad für mich war falsch, musste CWD (C: Drive/projectdirectory/) enthalten, dh ‘C:/Flask/venv/Lib/site-packages/cv2/data/’

    – ThomasLYIT

    23. August 2020 um 14:32 Uhr


Die XML-Datei fehlt, Sie können die Datei aus dem GitHub-Repository abrufen und im selben Verzeichnis wie Ihr Projekt ablegen. Link zum Ordner auf GitHub ist Hier. Laden Sie einfach die Datei mit dem Namen herunter haarcascade_frontalface_default.xml. Tatsächlich existiert die Datei auf Ihrem System. Gehen Sie einfach auf die Site-Pakete Ordner Ihres Python-Installationsordners und suchen Sie im Ordner cv2/data nach der Datei

Verwenden Sie den vollständigen Dateipfad und verwenden Sie “\\” anstelle von “\” im XML-Dateipfad.

Der Dateipfad sollte wie folgt lauten:

face_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml')

anstatt:

cascade_fn = args.get('--cascade', "..\..\data\haarcascades\haarcascade_frontalface_alt.xml")

Fehler 215 empty in Funktion detectMultiScale
Mashuk Khan

Sie müssen nur den richtigen Pfad der hinzufügen haarcascade_frontalface_default.xml Datei dh Sie müssen nur das Präfix hinzufügen (cv2.data.haarcascades)

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')

1647603971 716 Fehler 215 empty in Funktion detectMultiScale
Kodierer

keine Notwendigkeit, den Code zu ändern

Laden Sie diese .xml-Datei herunter und geben Sie dann den Pfad dieser Datei ein

es wird den Fehler lösen (100%)

1005110cookie-checkFehler: (-215) !empty() in Funktion detectMultiScale

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy