【问题标题】:HAAR face detection doesnt work as expectedHAAR 人脸检测无法按预期工作
【发布时间】:2020-05-14 01:00:32
【问题描述】:

我目前正在使用 OpenCV 进行人脸检测。我通过使用带有级联训练器 GUI 的正面和负面图像完成了训练。但是,当我运行我的代码来测试人脸检测时,只有第一张图像有效(仅当 .detectMultiScale 设置为 gray,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张负片。我确定这是否会影响结果。

【问题讨论】:

    标签: python opencv haar-classifier


    【解决方案1】:
    • 首先,你的负片和正片都应该在 灰度。
    • 其次,你没有谈论你是如何标记你的积极的 图像来获得正向量。
    • 第三,你的图片数量(pos和neg)不够, 很难得到好的结果。(建议最低为 900 neg 和 1800 pos)
    • 最后,我假设您使用的是opencv_traincascade,那么您在 xml 的哪个阶段完成了训练。

    我的建议是关注tutorial,关注the documentation。我之前使用过本教程并训练了许多对象,所以很好学习

    【讨论】:

      【解决方案2】:

      如果您使用此代码(不做任何更改),则只会处理一张图像 (pic2.png)。对于多个图像,您需要遍历特定文件夹中的图像路径。

      【讨论】:

      • 当我为 pic1.png 运行它时,它可以工作,但对于所有其他的它都没有。
      猜你喜欢
      • 2016-10-26
      • 1970-01-01
      • 2016-02-04
      • 2011-11-14
      • 2018-06-19
      • 1970-01-01
      • 2012-02-06
      • 2017-08-08
      • 2012-09-26
      相关资源
      最近更新 更多