recognition haarcascades haar front files failed eye error empty detectmultiscale cvtcolor python-2.7 opencv image-recognition

python-2.7 - haarcascades - opencv python face recognition webcam



error:(-215)! empty() en la funciĆ³n detectMultiScale (15)

"/ Anaconda3 / Lib / site-packages / cv2 / data /" Encontré el archivo xml en esta ruta para Anaconda

Estoy tratando de aprender cv2 en python 2.7, pero cuando ejecuto mi código, en la parte específica de este:

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)

devuelve esto:

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

Traté de buscar la respuesta aquí, pero lo mejor que pude encontrar es que debo cargar la face_cascade de la manera incorrecta ... ¿Alguna ayuda?


Corrí el mismo código. Hay dos cosas a tener en cuenta aquí. 1. Proporcione la ruta completa de los archivos .xml. 2. Dé una instrucción de evento de pulsación de tecla al final.

Agregue este bloque de código al final y ejecute su archivo, funcionó para mí:

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()

Por ejemplo, mi código parecía

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()

Mi salida parecía ingresar la descripción de la imagen aquí


El error se produce debido a la falta de archivos xml o la ruta incorrecta del archivo xml.

Por favor, intente el siguiente código,

import numpy as np import cv2 face_cascade = cv2.CascadeClassifier(''haarcascade_frontalface_default.xml'') eye_cascade = cv2.CascadeClassifier(''haarcascade_eye.xml'') cap = cv2.VideoCapture(0) while 1: ret, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) 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(30) & 0xff if k == 27: break cap.release() cv2.destroyAllWindows()


En OSX con homebrew, la ruta completa a la carpeta opencv debería funcionar:

face_cascade = cv2.CascadeClassifier(''/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'') eye_cascade = cv2.CascadeClassifier(''/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/haarcascades/haarcascade_eye.xml'')

Cuide el número de versión en la ruta.


Falta el archivo XML o el archivo o la ruta es incorrecta o la ruta create_capture es incorrecta.

Los caminos en la muestra de opencv se ven así:

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'')


Falta el archivo XML, puede obtener el archivo del repositorio de GitHub y colocarlo en el mismo directorio que su proyecto. El enlace a la carpeta en GitHub está here . Simplemente descargue el archivo llamado haarcascade_frontalface_default.xml . En realidad, el archivo existe en su sistema. Simplemente vaya a la carpeta de paquetes del sitio de su carpeta de instalación de Python y verifique la carpeta cv2 / data para el archivo


No copie y pegue el contenido del archivo xml, porque una vez que lo pegue en el bloc de notas se guardará como archivo de texto. Así que descargue directamente el archivo de la fuente dada.


No se encontró su archivo XML. Intenta usar rutas absolutas como:

/path/to/my/file (Mac, Linux) C://path//to//my//file (Windows)


Probablemente la face_cascade esté vacía. Puede verificar si la variable está vacía o no escribiendo el siguiente comando:

face_cascade.empty()

Si está vacío, obtendrá True y esto significa que su archivo no está disponible en la ruta que mencionó. Intente agregar la ruta completa del archivo xml de la siguiente manera:

r''D:/folder Name/haarcascade_frontalface_default.xml''


Puede encontrar este tipo de errores cuando no definió la ruta completa de su archivo XML. Pruebe este si está usando opencv3.1.0 en raspberrypi 3: " faceCascade = cv2.CascadeClassifier (''/ home / pi / opencv-3.1.0 / data / haarcascades / haarcascade_frontalface_default.xml '')"


Si está utilizando Anaconda, debe agregar la ruta de Anaconda.

new_path = ''C:/Users/.../Anaconda/Library/etc/haarcascades/'' face_cascade = cv2.CascadeClassifier(new_path + ''haarcascade_frontalface_default.xml'')


Tuve el mismo problema con opencv-python y usé un entorno virtual. Si es su caso, debe encontrar los archivos xml en:

/home/username/virtual_environment/lib/python3.5/site-packages/cv2/data/haarcascade_frontalface_default.xml

/home/username/virtual_environment/lib/python3.5/site-packages/cv2/data/haarcascade_eye.xml

Asegúrese de estar utilizando la ruta absoluta. De lo contrario, no funcionará.


Use la ruta completa del archivo y use "//" en lugar de "/" en la ruta del archivo xml.

La ruta del archivo debe ser la siguiente:

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

en lugar de:

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


el error puede deberse a que los archivos xml requeridos no se han cargado correctamente. Busque el archivo haarcascade_frontalface_default.xml utilizando el motor de búsqueda de su sistema operativo, obtenga la ruta completa y cv2.CascadeClassifier como argumento para cv2.CascadeClassifier como cadena


no es necesario cambiar el código

descargue ese archivo .xml, luego coloque la ruta de ese archivo

resolverá el error (100%)