OpenCV HaarCascade 不检测人脸

问题描述

我正在从事一个项目,我需要在发送到相机控制器脚本的帧中找到人脸的坐标,并在人脸周围绘制一个矩形并打印检测到的人脸数量。然后将图像发送到 pygame 图像缓冲区进行显示

我一直在使用 OpenCV 的内置 Haar Cascade 模型进行正面人脸检测 (haarcascade_frontalface_default.xml) 来完成此任务。但是,我遇到了一些问题。

faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

def jpg_frame_buffer_cb(data):
sys.stdout.flush()

mat = np.asarray(data,dtype='uint8')

faces = faceCascade.detectMultiScale(
    mat,scaleFactor=1.1,minNeighbors=3,minSize=(10,10)
)
for (x,y,w,h) in faces:
    cv2.rectangle(mat,(x,y),(x + w,y + h),(255,0),2)

print("Found {0} Faces!".format(len(faces)))

try:
    screen.blit(pygame.transform.scale(pygame.image.load(io.BytesIO(mat),"jpg"),(screen_w,screen_h)),(0,0))
    pygame.display.update()
    clock.tick()
except pygame.error: pass

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
        quit()

'data' 是相机中的脚本发送到控制器脚本的图像。它们以字节数组的形式出现,所以这就是为什么我尝试使用 numpy 将它们格式化为 ndarrays 以将它们用作 Haar Cascade 的输入。

我还要指出相机已经在生成灰度帧,这就是我不改变颜色的原因。

我的主要问题是,当相机发送带有人脸的帧时,Haar Cascade 模型似乎没有生成任何坐标。我也没有收到任何错误,并且帧在 pygame 图像缓冲区中正常显示,只是帧中的人脸周围没有矩形。

感谢我能得到的任何帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...