Python HAAR人脸检测无法按预期工作

Python HAAR人脸检测无法按预期工作,python,opencv,haar-classifier,Python,Opencv,Haar Classifier,我目前正在使用OpenCV进行人脸检测。我通过cascade trainer GUI使用正面和负面图像完成了培训。但是,当我运行代码测试人脸检测时,只有第一张图像有效(仅当.detectMultiScale设置为灰色,1.01,7时),而其他图像无效 import cv2 import numpy as np face_cascade = cv2.CascadeClassifier('classifier/cascade.xml') img = cv2.imread('p/pic2.png'

我目前正在使用OpenCV进行人脸检测。我通过cascade trainer GUI使用正面和负面图像完成了培训。但是,当我运行代码测试人脸检测时,只有第一张图像有效(仅当.detectMultiScale设置为灰色,1.01,7时),而其他图像无效

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('classifier/cascade.xml')

img = cv2.imread('p/pic2.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray,1.01,7)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我所有的正面图像都是灰度的,它们的大小是(600600)。我的负片图像尺寸较大,但不是灰度。有80张正片和160张负片。我确定这是否会影响结果。

如果使用此代码(没有任何更改),则只处理一个图像(pic2.png)。对于多个图像,您需要在特定文件夹的图像路径中循环。

如果您使用此代码(无任何更改),则只处理一个图像(pic2.png)。对于多个图像,您需要循环浏览特定文件夹中的图像路径。

  • 首先,你的负面和正面形象都应该是正确的 灰度
  • 第二,你没有说你是如何给自己的积极态度贴上标签的 获取正向量的图像
  • 第三,你的图片数量(正反)不够,而且 难以获得好的结果。(建议至少900负和1800位)
  • 最后,我假设您使用的是xml,您是在哪个阶段完成培训的
我的建议是循序渐进。我以前使用过本教程并训练过许多对象,因此遵循本教程很好
  • 首先,你的负面和正面形象都应该是正确的 灰度
  • 第二,你没有说你是如何给自己的积极态度贴上标签的 获取正向量的图像
  • 第三,你的图片数量(正反)不够,而且 难以获得好的结果。(建议至少900负和1800位)
  • 最后,我假设您使用的是xml,您是在哪个阶段完成培训的

  • 我的建议是循序渐进。我以前使用过本教程并训练过许多对象,所以当我为pic1.png运行本教程时,很好地遵循

    ,但对于其他所有对象,它都不起作用。当我为pic1.png运行本教程时,它起作用,但对于其他所有对象,它都不起作用。