python - HAAR人脸检测无法正常工作

标签 python opencv haar-classifier

我目前正在使用OpenCV进行人脸检测。我通过将正负图像与级联训练器GUI配合使用来完成训练。但是,当我运行代码以测试人脸检测时,只有第一个图像有效(仅当.detectMultiScale设置为grey,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()

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

最佳答案

  • 首先,您的正片和负片都应位于
    灰度。
  • 其次,您没有谈论如何标记您的正面
    图像以获得正 vector 。
  • 第三,您的图片数量(正数和负数)不足,并且
    很难获得良好的结果。(建议最少为900 neg和1800 pos)
  • 最后,我假设您正在使用opencv_traincascade,所以您在xml的哪个阶段完成了培训。

  • 我的建议是通过跟随tutorial来跟随这个the documentation。我之前使用了本教程并训练了许多对象,因此可以很好地遵循

    关于python - HAAR人脸检测无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59951691/

    相关文章:

    python - 如何使用 lxml 创建文档的子集?

    c++ - 如何加载 txt/.pgn.camera 文件并将其存储在 c++/opencv 的矩阵中

    python - 让 haar 级联工作

    python - 如何让 bjam 检测我在 Windows 上安装的 Python?

    python - 使用 Beautifulsoup 解析 NELL 知识库页面

    opencv - 通过在opencv中应用gaussianblur,为什么需要增加threadhold参数?

    c++ - 如何同步接收到的每 20 毫秒更新一次的图像?

    c++ - OpenCV:为什么 Haar 分类器只检测到一张脸和一只眼睛?

    opencv - 尝试创建我的Haartraining OpenCV

    python - 我如何实现具有多个 init 继承的 super() ?