OpenCV para la detección de rostros: el módulo ‘cv2’ no tiene el atributo ‘data’ AND !empty() en la función ‘detectMultiScale’.
Me gustaría usar HAAR para detectar caras.
Primero ejecuté el siguiente código:
import cv2
# usar el cascade HAAR para detectar caras
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# detectar caras
faces = face_cascade.detectMultiScale(img)
Al hacerlo, obtengo el siguiente error:
error: OpenCV(4.1.0) /home/vocuser/tmp/xeus/4.1.opencv/opencv/modules/objdetect/src/cascadedetect.cpp:1658: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
Leí que estoy obteniendo el error porque no se pudo encontrar el archivo XML. Así que hice lo siguiente:
import cv2
# usar el cascade HAAR para detectar caras
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# detectar caras
faces = face_cascade.detectMultiScale(img)
Pero ahora obtengo el siguiente error:
AttributeError: module 'cv2' has no attribute 'data'
Entonces, ¿cuál es el enfoque correcto? ¿Cómo puedo usar la función detectMultiScale
?
davy.ai
Parece que el problema está en la ubicación del archivo XML. Aquí hay una posible solución:
cv2.data.haarcascades
.Una vez que haya cargado el archivo XML correctamente,
detectMultiScale
debería funcionar como se espera.