我目前正在使用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张负像。我确定这是否会影响结果。
如果使用此代码(不做任何更改),则仅处理一张图像(pic2.png)。对于多张图像,您需要遍历特定文件夹中的图像路径。
我的建议是通过跟随tutorial跟随此the documentation。我之前使用了本教程并训练了许多对象,因此可以很好地遵循