在open CV中,python如何消除相机中的滞后

在open CV中,python如何消除相机中的滞后,python,opencv,face-detection,Python,Opencv,Face Detection,我正在研究Odroid,并在上面使用opencvpython运行人脸检测。但是照相机有太多的滞后。我尝试了很多方法,但都无法消除滞后现象。请建议如何消除滞后。我想检测至少15英尺以外的人脸,因为我需要高分辨率图像,但高分辨率图像会导致更多的延迟。目前我在两帧之间有2秒的延迟。如果有建议,请分享 import cv2, sys, numpy, os import json size = 3 fn_haar = 'haarcascade_frontalface_default.xml' fn_haa

我正在研究Odroid,并在上面使用opencvpython运行人脸检测。但是照相机有太多的滞后。我尝试了很多方法,但都无法消除滞后现象。请建议如何消除滞后。我想检测至少15英尺以外的人脸,因为我需要高分辨率图像,但高分辨率图像会导致更多的延迟。目前我在两帧之间有2秒的延迟。如果有建议,请分享

import cv2, sys, numpy, os
import json
size = 3
fn_haar = 'haarcascade_frontalface_default.xml'
fn_haareye = 'haarcascade_eye.xml'
(im_width, im_height) = (112, 92)
haar_cascade = cv2.CascadeClassifier(fn_haar)
eye_cascade = cv2.CascadeClassifier(fn_haareye)
webcam = cv2.VideoCapture(0)
while True:
    (rval, frame) = webcam.read()
    frame=cv2.flip(frame,1,0)
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    mini = cv2.resize(gray, (gray.shape[1] / size, gray.shape[0] / size))
    faces = haar_cascade.detectMultiScale(mini,scaleFactor=1.05, minNeighbors=3, minSize=(20, 20), flags = cv2.cv.CV_HAAR_SCALE_IMAGE)
    for i in range(len(faces)):
        face_i = faces[i]
        (x, y, w, h) = [v * size for v in face_i]
        face = gray[y:y + h, x:x + w]
        face_resize = cv2.resize(face, (im_width, im_height))
        eyes = eye_cascade.detectMultiScale(face)
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(face_resize ,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
    cv2.imshow('OpenCV', frame)
    key = cv2.waitKey(10)
    if key == 27:
        break

您可以尝试以下事项(这些方面基于我的经验)
1.降低图像分辨率或从图像中选择roi。
2.增加detectMultiscale因子。您必须调整它,因为增加它会对其准确性产生不利影响。

3.设置HOG的NLEVELES参数,在我的例子中默认设置为64,将其减少到8几乎不会影响精度,但速度提高了25-30%。

增加detectMultiScale函数中的scaleFactor。如果你有选择,那么试着选择投资回报率,以尽量减少你必须面对的区域detection@Optimus1072如果我增加比例因子,它是否能够检测15英尺范围内的人脸?使用scaleFactor=1.2和360*288的图像分辨率,我能够在我的机器上(I5)和每帧需要15毫秒。我需要实时检测人脸,这就是为什么我每三帧检测一次。通过降低相机的分辨率,我无法从更大的距离检测到我需要的东西。第二,我没有使用hog,我使用的是haar级联。。。。有什么我不明白的吗。。。事实上,我刚开始写简历,所以如果我没有得到正确的答案,请帮助我。