【发布时间】:2018-09-13 16:48:37
【问题描述】:
我在 OpenCV 中同时使用两种 Haar 级联算法(正面和侧面)来改进人脸检测。
很遗憾,检测无法正常工作,我不知道如何解决。返回值为2(在一张有5张脸的图片上,正常检测到),所有的矩形都消失了。
这是预期的结果(没有重叠的矩形):
This is the original picture (and also the result.jpg) if you want to make your own test.
这是代码:
import cv2
import numpy as np
image=cv2.imread("/home/pi/Downloads/test.jpg")
face_cascade=cv2.CascadeClassifier("/home/pi/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_alt.xml")
profil_cascade=cv2.CascadeClassifier("/home/pi/opencv-3.4.0/data/haarcascades/haarcascade_profileface_alt.xml")
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
face=face_cascade.detectMultiScale(gray, 1.06, 5)
profil=profil_cascade.detectMultiScale(gray, 1.1, 5)
combined_array=np.append(face, profil, axis=0)
combined_list=combined_array.tolist()
result=cv2.groupRectangles(combined_list,2)
print("I've found "+str(len(result))+ " face(s)")
for (x,y,w,h) in result[0]:
cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imwrite("/home/pi/Download/result.jpg", image)
【问题讨论】:
-
找到原始picture。请将其添加到问题中
-
谢谢你的建议,我已经做到了:)
-
代码仍然无法重现,因为
CascadeClassifier('filepath')正在尝试从 SO 用户无法使用的文件中加载分类器。此外,您可能需要上传执行后出现的result.jpg图像,以显示与您想要的图像的比较。无论如何,很可能您使用的预训练模型并没有您想象的那么有效。 -
你说得对,我已经做出了改变。我没有考虑过这一点,因为我使用的是与 OpenCV 集成的经典 haarcascade 算法,但添加此信息是一个好点
-
我的意思是,您收到的意外输出很可能取决于您正在加载的模型。我们无权访问
"/home/pi/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_alt.xml",因此我们无法测试/调试您的代码。您要么必须发布它,让我们以这种方式加载它,要么找到一个可用的网站,让我们从那里加载它。否则无法重现该问题。
标签: python opencv machine-learning computer-vision