【CV】树莓派+OpenCV-python解决摄像头分辨率及帧率过低无法调整问题

问题

笔者使用的是USB摄像头。
如果你使用的是CSI摄像头,vcgencmd get_camera命令可能能够帮到你。希望读取高帧率可以看看CSDN-树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面
如果你使用的是USB摄像头,vcgencmd get_camera命令会出现supported=1 detected=0的提示,这是正常的。同时,raspistill库不支持USB摄像头,不能使用该库也是正常的。

之前在树莓派上一直使用的30fps的低帧率摄像头,所以一直没有发现opencv不能设置摄像头的帧率和分辨率,一直跑的是320x240,30fps
最近更换了一个在640x480下180fps,在1280x720下90fps的摄像头才发现opencv怎么都不能更改摄像头的分辨率,并且就算是在默认的320x240分辨率下也只有30fps

解决过程

需要直接看解决方案请下拉,这里的内容如果不全看完可能会误导

1.用fswebcam拍照,尝试摄像头在树莓派上是否能切换到1280x720

安装:sudo apt-get install fswebcam
使用:fswebcam --no-banner -r 1280x720 -q img.jpg
发现能够保存下来一张1280x720分辨率的图片,说明摄像头调整分辨率没问题

fswebcam命令参数使用见 CSDN-树莓派使用摄像头——fswebcam

2.用luvcview显示摄像头画面

安装:sudo apt-get install luvcview
使用:luvcview -s 1280x720
可以看到分辨率显示正确,但是帧率只有7帧左右
在这里插入图片描述
另外,命令输出中显示设置格式为MJPG,设置分辨率为1280x720,设置帧率为90fps,没有问题
在这里插入图片描述

解决方案

偶然看见一篇文章说是视频读取格式导致帧率过低,尝试一下发现可以输出高帧率了。

大部分摄像头支持YUY2和MJPG两种格式,而使用YUY2格式时因为数据量较大,可能帧率会较低,所以需要切换成MJPG格式输出。

  • 笔者在windows上使用opencv读取这个摄像头可以不需要修改视频格式就能到高帧率,猜测可能在windows上opencv默认读取MJPG格式,而在树莓派上opencv默认读取YUY2格式

opencv中的cap.set()函数可以对摄像头进行设置,部分参数如下

参数作用
3CV_CAP_PROP_FRAME_WIDTH
4CV_CAP_PROP_FRAME_HEIGHT
6CV_CAP_PROP_FOURCC4个字符表示的视频编码器格式

使用cap.set(6,cv2.VideoWriter.fourcc('M','J','P','G'))函数即可将视频格式切换成MJPG格式,
修改后进行摄像设置的代码为:

cap.set(6,cv2.VideoWriter.fourcc('M','J','P','G'))
cap.set(3,1280)
cap.set(4,720)

参考的两篇博客:
CSDN-Python opencv 调用摄像头时设置以MJPG等编码格式获取视频
CSDN-Python+Opencv读取高帧率USB摄像头问题

  • 5
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在使用OpenCV-Python调用摄像头时,可以通过设置摄像头分辨率来调节图像的质量。要设置摄像头分辨率,可以使用OpenCV库中的`cv2.VideoCapture()`函数打开摄像头,并在打开摄像头后使用`cv2.VideoCapture().set()`方法来设置分辨率。例如,使用`cv2.VideoCapture(0).set(cv2.CAP_PROP_FRAME_WIDTH, 1280)`和`cv2.VideoCapture(0).set(cv2.CAP_PROP_FRAME_HEIGHT, 720)`来分别设置摄像头的宽度和高度为1280x720像素。这样就可以调节摄像头分辨率了。你也可以使用fswebcam来调整摄像头分辨率。安装fswebcam后,可以使用命令`fswebcam --no-banner -r 1280x720 -q img.jpg`来保存一张分辨率为1280x720的图片。这样就可以验证摄像头分辨率是否调整成功了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【CV树莓派+OpenCV-python解决摄像头分辨率帧率过低无法调整问题](https://blog.csdn.net/qq_42475234/article/details/126201152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python OpenCV设置摄像头分辨率](https://blog.csdn.net/update7/article/details/129680058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fannnnf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值