人脸检测有点慢.我如何提高速度和效率,以及如何保存面孔


import cv2
cam = cv2.VideoCapture(0)
s, img = cam.read()
winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)
while s:
    cv2.imshow( winName,img )
    s, img = cam.read()
    hc = cv2.CascadeClassifier("foo.xml") #xml file for detection
    faces = hc.detectMultiScale(img)
    for face in faces:
        cv2.rectangle(
            img, (face[0], face[1]), (face[0] + face[2], face[0] + face[3]),
            (255, 0, 0), 3
        )
    key = cv2.waitKey(10)
    if key == 27:
        cv2.destroyWindow(winName)
        break

文档在这里: http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html

您可以尝试两件简单的事情来加速检测(两者都以降低准确性为代价):

  • 您可以增加 scaleFactor,默认值为 1.1,您可以尝试 1.2 或 1.3,这意味着在多比例扫描中的每个比例下,它都会将图像降采样一个更大的因子。
  • 您可以设置相对较大的最小人脸大小,例如 (64,64),这意味着它将停止搜索较小的人脸,从而节省时间。您还可以尝试最大面部大小,如果您或多或少知道面部在场景中的大小。

真的是你所有的代码? IIRC,它仅适用于灰度

  • 尝试交易速度以获得准确性,并使用LBPCASCADE而不是HAAR级联

  • cv2.imwrite("myface.png", img[ face[1]:face[1]+face[3], face[0]:face[0]+face[2] ]); 应该保存面子投资回报率

最新更新