Search on blog:

Problem to load file haarcascades in OpenCV [GB]

Sometimes tutorial loads haarcascades file installed with OpenCV like this

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

but when we run code

import numpy as np
import cv2

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

image = np.array([1,2,3], dtype='uint8')
eye_cascade.detectMultiScale(img, 1.3, 5)

then we get error

cv2.error: OpenCV(4.1.2) /io/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'

Problem is that it needs full path to this file - so we have to add folder to this path.

Lucky OpenCV has special variable with full path to this folder

import cv2

print(cv2.data.haarcascades)

and we can use it to create full path to this file

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

You can even use it see all .xml files in this folder

import os
import cv2

for name in sorted(os.listdir(cv2.data.haarcascades)):
    if name.endswith('.xml'):
        print(name)

Result

haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalcatface.xml
haarcascade_frontalcatface_extended.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_default.xml
haarcascade_fullbody.xml
haarcascade_lefteye_2splits.xml
haarcascade_licence_plate_rus_16stages.xml
haarcascade_lowerbody.xml
haarcascade_profileface.xml
haarcascade_righteye_2splits.xml
haarcascade_russian_plate_number.xml
haarcascade_smile.xml
haarcascade_upperbody.xml
If you like it
Buy a Coffee