我试图用哈尔级联来检测上身。而我依然没有得到在图像上的任何检测。
import numpy as np
import cv2
cascade = cv2.CascadeClassifier('haarcascade_upperbody.xml');
imgPath = '/home/ayush/Desktop/images.jpeg';
img = cv2.imread(imgPath);
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY);
body = cascade.detectMultiScale(
gray,
scaleFactor = 1.1,
minNeighbors = 5,
minSize = (30,30),
flags = cv2.CASCADE_SCALE_IMAGE
)
for (x, y, w, h) in body:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('Upper Body',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
为什么会这样呢?我使用OpenCV3。
这可能是你的scaleFactor
太小。我想正好运行代码(虽然我自己的图像),并发现没有结果在1.1
,却发现在1.01
结果。
见here对的参数是如何影响你的结果的描述。
这是因为该文件haarcascade_upperbody.xml训练与行人检测使用,并且很可能是你的图像不匹配这种情况。