所以我正在做一个项目,它的许多部分之一包括识别图像中的面孔。我已经根据我的需要进行了大量研究,默认的正面 haarcascade 不能满足我的需要。然而,我发现了另一个在更合适的数据库(UMIST)上训练的 haarcascade。我想改用新的级联,但我收到了这个错误。
error: <class 'cv2.CascadeClassifier'> returned a result with an error set
我假设它是自定义的 haarcascade 只是不起作用。
我可能只是遗漏了一些非常明显的东西,或者我的自定义 haarcascde 不起作用。如果只是 haarcascde 不起作用,那么还有另一种方法可以使用另一个 haarcascade 吗?
注意:这里是带有 UMIST haarcascade 的 GitHub 链接,我也确实将 UMIST 级联移动到 cv2 级联数据文件夹中,所以这不是问题。
我确实突然想到 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)