-1

here is my code in python :

import numpy as np
import cv2

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

img = cv2.imread('human.png')
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)
    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)
cv2.waitKey(0)
cv2.destroyAllWindows()

Here is the error :

Traceback (most recent call last): 
File "image.py", line 10, in faces = face_cascade.detectMultiScale(gray, 1.3, 5)  
cv2.error: OpenCV(4.1.2) /io/opencv/modules/objdetect/src/cascadedetect.cpp:1689: 
error: (-215:Assertion failed) !empty() in function 'detectMultiScale'

enter image description here

furas
  • 134,197
  • 12
  • 106
  • 148
Antoine
  • 23
  • 1
  • 5
  • What do you understand from that error message? What have you done to try to debug this? We can't do much, since we don't have the data. – AMC Dec 15 '19 at 01:53

1 Answers1

0

I will guess but probably (as usually) you have to use full path to .xml files.

Without full path it searchs .xml in your current folder and it couldn't find them.

Luckly cv2 has variable cv2.data.haarcascades with path to folder with .xml files.

On my computer print(cv2.data.haarcascades) gives

/usr/local/lib/python3.7/dist-packages/cv2/data/

So use os.path.join() to create full path.

face_cascade = cv2.CascadeClassifier(os.path.join(cv2.data.haarcascades, 'haarcascade_frontalface_default.xml'))
eye_cascade = cv2.CascadeClassifier(os.path.join(cv2.data.haarcascades, 'haarcascade_eye.xml'))
furas
  • 134,197
  • 12
  • 106
  • 148