遇到问题描述
当我们用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)
最后通过方法二解决问题。
参考
文档信息
- 本文作者:Awei
- 本文链接:https://shuke-rrrw.github.io/Awei.github.io//2025/10/27/cv2.videocapture/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
