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

时间:2013-10-16 17:52:57

标签: python opencv webcam face-detection

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

2 个答案:

答案 0 :(得分:0)

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

您可以尝试两种简单的方法来加速检测(两者都以较低的准确性为代价):

  • 你可以增加scaleFactor,默认值是1.1,你可以尝试1.2或1.3,这意味着在多尺度扫描的每个尺度下,它会以较大的因子对图像进行下采样。<​​/ li>
  • 您可以设置相对较大的最小面部大小,例如(64,64),这意味着它将停止搜索较小的面部,从而节省时间。如果您知道脸部在场景中的大小,您还可以尝试最大脸部大小。

答案 1 :(得分:0)

那真的是你的所有代码吗? iirc,它只适用于灰度

  • 尝试交易速度以获得准确性,并使用lbpcascade而不是haar one

  • cv2.imwrite(“myface.png”,img [face [1]:face [1] + face [3],face [0]:face [0] + face [2]]);应该保存面对roi