Python+Opencv 读取高帧率 USB 摄像头问题
前几次使用 Python+Opencv,对网络摄像头,USB 摄像头进行数据采集,基本流程已经跑通,没什么大问题。最近项目中使用了一款 120fps/s 的 USB 摄像头,但是调试好代码运行后,问题来了。
遇到的问题
120fps,每次只能读取 30 多张图片或者最多也在 40 张以下。根本达不到要求。
开始使用的代码
复制代码
问题分析
笔者发现,每次在摄像头的控制软件上调参数,比如分辨率设置 800600,但是运行代码后依然是 640480,why?why?
该摄像头在 640*480 分辨率下,支持 120fps,笔者在代码中限制了下帧率为 60fps,但还是每秒只能获取 30 多张图片,这又是 Why?why?
复制代码
开始求助网络,从网上搜了很多,终于是看到了希望
原来以上问题在于,博主链接
分析结论
笔者使用的 USB 相机,同样支持视频编码格式为 YUY2/MJPG,但是 Opencv 默认读取的是 YUY2,而笔者在摄像头控制软件上查看了下,YUY2 格式的各种分辨率下的帧率最大才 40 帧,那么这就对了,就知道为啥一直是 30-40 张图片了。那么就需要在脚本中修改格式为 MJPG,从以上博主的链接中可以看到:
如果要修改分辨率就必须使用:
复制代码
要修改格式为 MJPG 编码必须使用:
复制代码
那么就需要在代码中加入:
复制代码
修改后的代码
复制代码
版权声明: 本文为 InfoQ 作者【虫无涯】的原创文章。
原文链接:【http://xie.infoq.cn/article/51ab33648f54c95fb42bd6cf3】。文章转载请联系作者。
评论