在打开的 CV 中,python 我怎样才能消除相机中的延迟
In open CV, python how can i remove lag in the camera
我正在研究 Odroid 和 运行 使用 openCV python 进行人脸检测。但是相机有太多的滞后。我尝试了很多东西,但无法消除滞后。请建议我如何消除滞后。我想检测至少 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 Factor。你将不得不调整它,因为增加它会对它的准确性产生不利影响。
3. 设置 HOG 的 nlevels 参数,在我的例子中默认设置为 64,减少到 8 对精度几乎没有影响,但速度提高了 25-30%。
我正在研究 Odroid 和 运行 使用 openCV python 进行人脸检测。但是相机有太多的滞后。我尝试了很多东西,但无法消除滞后。请建议我如何消除滞后。我想检测至少 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 Factor。你将不得不调整它,因为增加它会对它的准确性产生不利影响。
3. 设置 HOG 的 nlevels 参数,在我的例子中默认设置为 64,减少到 8 对精度几乎没有影响,但速度提高了 25-30%。