使用haar级联检测UpperBody

时间:2017-07-03 19:42:00

标签: computer-vision opencv3.0

我正试图用haar级联来检测上半身。 但我仍然没有对图像进行任何检测。

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。

2 个答案:

答案 0 :(得分:1)

您的scaleFactor可能太小。我尝试完全运行您的代码(虽然使用我自己的图片)并且在1.1找不到结果,但在1.01处找到了结果。

有关参数如何影响结果的说明,请参阅here

答案 1 :(得分:0)

这是因为文件 haarcascade_upperbody.xml 经过培训可用于行人检测,并且很可能您的图像与这种情况不匹配。