opencv-videocapture|解决使用opencv读取摄像头视频时帧率低的问题

2025/10/27 问题记录 共 702 字,约 3 分钟
阿伟

遇到问题描述

当我们用opencv自带的接口VideoCapture 打开设备自带的摄像头或者usb连接的摄像头时。对于一些高清的摄像头画面有的时候会出现帧率很低的情况(大概是6FPS),一开始我以为是摄像头的问题,几番尝试换了几个摄像头还是一样,所以应该是软件层面的问题。

解决方案

1.增加USB摄像头的带宽(作用不大,只能略微提升帧率)。

在命令行输入:

sudo gedit /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

改为:

```GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash usbcore.usbfs_memory_mb=1024”


然后更新GRUB

```sudo update-grub

2.USB摄像头常见的输出格式有YUYV和MJPEG。YUYV是未压缩格式,数据量大,在高分辨率下极易占满USB带宽导致帧率下降。而MJPEG是压缩格式,可以显著减少数据量,从而更容易达到高帧率,在代码中做如下修改:

cap = cv2.VideoCapture(camera_id) ret = cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G')) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)

最后通过方法二解决问题。

参考

文档信息

Search

    Table of Contents