HAAR 人脸检测未按预期工作
HAAR face detection doesnt work as expected
我目前正在使用 OpenCV 进行人脸检测。我通过使用带有级联训练器 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()
我所有的正面图像都是灰度的,它们的大小是(600,600)。我的负片图像尺寸更大,但不是灰度。有 80 个正图像和 160 个负图像。我确定这是否会影响结果。
如果您使用此代码(没有任何更改),则只会处理一张图像 (pic2.png)。对于多个图像,您需要从特定文件夹循环遍历图像路径。
- 首先你的负面和正面图像都应该在
灰度。
- 其次,你没有说你是如何标记你的阳性的
获取正向量的图像。
- 第三,你的图片数量(pos and neg)不够
很难得到好的结果。(建议最低 900 neg 和 1800 pos)
- 最后,我假设你正在使用 opencv_traincascade 那么你在 xml 的哪个阶段完成了训练。
我的建议是遵循这个tutorial by following the documentation。我之前使用过这个教程并训练了很多对象,所以很好遵循
我目前正在使用 OpenCV 进行人脸检测。我通过使用带有级联训练器 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()
我所有的正面图像都是灰度的,它们的大小是(600,600)。我的负片图像尺寸更大,但不是灰度。有 80 个正图像和 160 个负图像。我确定这是否会影响结果。
如果您使用此代码(没有任何更改),则只会处理一张图像 (pic2.png)。对于多个图像,您需要从特定文件夹循环遍历图像路径。
- 首先你的负面和正面图像都应该在 灰度。
- 其次,你没有说你是如何标记你的阳性的 获取正向量的图像。
- 第三,你的图片数量(pos and neg)不够 很难得到好的结果。(建议最低 900 neg 和 1800 pos)
- 最后,我假设你正在使用 opencv_traincascade 那么你在 xml 的哪个阶段完成了训练。
我的建议是遵循这个tutorial by following the documentation。我之前使用过这个教程并训练了很多对象,所以很好遵循