使用OpenCV / Python无法更改网络摄像机的编解码器

问题描述 投票:0回答:1

我正在使用Windows 10和python 3.7 / OpenCV4和Logitech C922网络摄像头。虽然使用Windows摄像头应用程序,凸轮似乎可以提供30 fps,但使用OpenCV时,我的速度不能超过5-6 fps。分辨率设置为FHD。

cam = cv2.VideoCapture(cv2.CAP_DSHOW+0)
while(1):
    ret,frame = cam.read()
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

[在另一篇文章中,我找到了将编解码器更改为MJPG的解决方案。但是,相机不接受更改编解码器。我尝试过:

cam.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('m','j','p','g'))
cam.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
cam.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG'))
cam.set(cv2.CAP_PROP_FOURCC, float(cv2.VideoWriter_fourcc('m','j','p','g'))
cam.set(cv2.CAP_PROP_FOURCC, float(cv2.VideoWriter_fourcc('M','J','P','G'))
cam.set(cv2.CAP_PROP_FOURCC, 1196444237.0)

相机总是返回“ 844715353.0”

如何获得更高的fps?

python opencv webcam video-capture codec
1个回答
0
投票

我使用Logitech c920网络摄像头,并在WebcamVideoStream模块中测试了imutils类,当使用OpenCV处理视频流以移动I / O时,该模块使用线程和队列数据结构来改善FPS(即,从相机传感器读取帧)到单独的线程,您可以在此文件webcamvideostream.py上设置自定义分辨率。

您可以使用线程获得更高的FPS。也许此解决方案可以帮助您。

请参阅这些链接:

https://www.pyimagesearch.com/2015/12/21/increasing-webcam-fps-with-python-and-opencv/

https://www.pyimagesearch.com/2017/02/06/faster-video-file-fps-with-cv2-videocapture-and-opencv/

https://github.com/jrosebr1/imutils/blob/master/imutils/video/webcamvideostream.py

© www.soinside.com 2019 - 2024. All rights reserved.