Итак, я работаю над проектом, и одна из многих его частей включает в себя определение лиц на изображении. Я провел кучу исследований, основанных на том, что мне нужно, и стандартная лицевая сторона haarcascade не работает для моих нужд. Тем не менее, я нашел еще один haarcascade, который был обучен на более подходящей базе данных (UMIST). Я хочу использовать новый каскад вместо этого, но есть эта ошибка, которую я получил.
error: <class 'cv2.CascadeClassifier'> returned a result with an error set
Я предполагаю, что пользовательский haarcascade просто не работает.
IВозможно, я просто упускаю что-то, что очень очевидно, или мой пользовательский haarcascde просто не будет работать. Если не работает только haarcascde, то есть ли другой способ использовать другой haarcascade?
Примечание: Здесь - это ссылка на GitHub с haarcascade UMIST, также япереместил каскад UMIST в папку cv2 cascade data, так что это не проблема.
Мне только что пришло в голову, что данные UMIST могут быть устаревшими и Opencv2 просто не может их использовать? Я не уверен, что любая помощь будет потрясающей!
Вот исходный код проекта:
import cv2
import sys
targetImage = 1
ImagePath = 'image-9.jpg'
image = cv2.imread(ImagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faceCascade2 = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_profileface_umist_1.xml")
faces = faceCascade2.detectMultiScale(
gray,
scaleFactor=1.3,
minNeighbors=3,
minSize=(15, 15)
)
print("Found {0} Faces".format(len(faces)))
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
status = cv2.imwrite("Data/image-9-data.jpg", image)
print("saved",status)