HAAR人脸检测无法正常工作

问题描述 投票:0回答:2

我目前正在使用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张负像。我确定这是否会影响结果。

python opencv haar-classifier
2个回答
0
投票

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


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

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

© www.soinside.com 2019 - 2024. All rights reserved.