你好,这个星球的聪明人。
我正在操纵我的网络摄像头(MacBook)的实时视频,用OpenCV做一些人脸检测,然后使用pyvirtualcam将其导出到虚拟摄像头。通过这样做,我可以在Google、Zoom等会议期间打开被操纵的实时视频。
到目前为止,我已经设法使所有的工作,但它是较慢的,虽然我将框架设置为20 2fps,它更像是2fps。
有没有人知道我如何优化这个以获得一个平滑的视频?
这是我的代码(它检测人脸并在其周围放置一个红色矩形):
import cv2
import pyvirtualcam
import face_recognition
captr = cv2.VideoCapture(1)
fmt = pyvirtualcam.PixelFormat.BGR
face_locations = []
with pyvirtualcam.Camera(width=1280, height=720, fps=20, fmt=fmt) as cam:
while True:
ret_val, frame = captr.read()
face_locations = face_recognition.face_locations(frame)
for top, right, bottom, left in face_locations:
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
frame = cv2.resize(frame, (1280, 720), interpolation=cv2.BORDER_DEFAULT)
# cv2.imshow('my webcam', frame)
cam.send(frame)
cam.sleep_until_next_frame()
if cv2.waitKey(1) & 0xFF == ord('q'):
break # esc to quit
cv2.destroyAllWindows()
发布于 2021-12-09 15:44:21
谢谢你对此的想法。
我记得不久前我遇到了一个OpenCV face-detection tutorial,考虑到框架,它的工作没有问题。
因此,我使用了教程中的代码,并将其与pyvirtualcam结合使用,其结果非常适合我所希望的。
我在这方面还是很新的,我想知道为什么我的代码现在工作得很快,而我的旧的慢代码。
这是我的新代码:
import cv2
import pyvirtualcam
import numpy as np
faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')
video_capture = cv2.VideoCapture(1)
video_capture.set(3,1280)
video_capture.set(4,720)
fmt = pyvirtualcam.PixelFormat.BGR
with pyvirtualcam.Camera(width=1280, height=720, fps=25, fmt=fmt) as cam:
while True:
ret, frame = video_capture.read()
frame = cv2.flip(frame, 1)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = frame[y:y+h, x:x+w]
frame = cv2.resize(frame, (1280, 720), interpolation=cv2.BORDER_DEFAULT)
# cv2.imshow('my webcam', frame)
cam.send(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break # esc to quit
video_capture.release()
cv2.destroyAllWindows()
我猜是因为我在改变计算方法?
还是我完全错了?
https://stackoverflow.com/questions/70268304
复制相似问题