如何使用openCV和Logitech C920使python每秒记录30或60帧
我正在尝试以60 FPS的速度录制720p视频,或以30 FPS的速度录制1080p视频,但是在python上使用C920网络摄像头和OpenCV时,我只能以720p的速度录制10 FPS的视频,而在1080p上录制5 FPS的视频 我尝试了很多不同的openCV设置,但是没有改变输出的FPS如何使用openCV和Logitech C920使python每秒记录30或60帧,python,opencv,webcam,video-capture,logitech,Python,Opencv,Webcam,Video Capture,Logitech,我正在尝试以60 FPS的速度录制720p视频,或以30 FPS的速度录制1080p视频,但是在python上使用C920网络摄像头和OpenCV时,我只能以720p的速度录制10 FPS的视频,而在1080p上录制5 FPS的视频 我尝试了很多不同的openCV设置,但是没有改变输出的FPS import cv2 import time FPS = 0 cap = cv2.VideoCapture(0) fourcc = cv2.VideoWriter_fourcc(*'MJPG') if
import cv2
import time
FPS = 0
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
if(not cap.isOpened()):
exit()
cap.set(cv2.CAP_PROP_FOURCC, fourcc);
cap.open(cv2.CAP_ANY);
cap.set(cv2.CAP_PROP_CONVERT_RGB, 0);
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
cap.set(cv2.CAP_PROP_FPS, 60)
last = time.time()
for i in range(0,100):
before = time.time()
rval, frame = cap.read()
now = time.time()
print("cap.read() took: " + str(now - before))
if(now - last >= 1):
print(FPS)
last = now
FPS = 0
else:
FPS += 1
cap.release()
我希望它输出60fps,但它只提供9或10fps,OpenCV会自动选择第一个可用的捕获后端。可能是因为它没有自动使用V4L2 如果从源代码进行构建,则还可以同时设置带_V4L=ON的
-D和带_LIBV4L=ON的-D
OpenCV选择的像素格式可能不支持所需的帧速率,即所需的分辨率。在Linux上,您可以使用v4l2 ctl--list formats ext
和v4l2 ctl--all
查看设置
要设置要使用的像素格式,请设置捕获的CAP_PROP_FOURCC
属性:
capture = cv2.VideoCapture(cam_id, cv2.CAP_V4L2)
capture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
运行此代码的硬件规格是什么?如果您的fps以更高的分辨率下降,很明显脚本受到CPU或相机发送输入所需时间的限制。如果瓶颈是摄像头,而CPU使用率仍然很低,也许你可以通过使用多个线程来解决。我在windows10、python 3.6.5上运行,结果是我的笔记本电脑(6700HQ)和我的电脑(8700K)都是一样的。如果我在windows中记录,它的速度确实达到1080p30fps