Problem z wczytaniem pliku haarcascades w OpenCV
Czasami tutorial wczytuje plik haarcascades
zainstalowany z OpenCV
w ten sposób
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
ale gdy my uruchamiamy taki kod
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)
to otrzymujemy błąd
cv2.error: OpenCV(4.1.2) /io/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
Problem jest, że potrzebna jest pełna ścieżka do tego pliku więc musimy dodać folder do nazwy pliku
Szczęścliwie OpenCV
ma specjalną zmienną z pełną ścieżką do tego folderu
import cv2
print(cv2.data.haarcascades)
i możemy użyć jej do stworzenia pełnej ścieżki do tego pliku
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
Możeby nawet użyć jej do zobaczenia jakie pliki .xml
są w tym folderze
import os
import cv2
for name in sorted(os.listdir(cv2.data.haarcascades)):
if name.endswith('.xml'):
print(name)
Wynik
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
Buy a Coffee