码迷,mamicode.com
首页 > 其他好文 > 详细

opencv 设置摄像头采集图像编码格式

时间:2020-03-10 15:35:49      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:图像编码   帧率   理论   有一个   port   linu   usb   rcc   rop   

问题:

新到的摄像头在windows下用opencv打开,设置分辨率为3840*2160,输出图像基本为实时。在linux下用opencv打开,同样分辨率。输出图像fps降到了1 。

原因:

视频输出格式为yuv时,帧率只有1。只有在输出格式为mjpg时,帧率才为实时。

为什么呢?
因为其中有一个瓶颈:
输出fps=30,yuv格式的4k视频,所需的数据传输速率为30 f/s * 3840*2160 Byte / 2 = 124416000 Byte/s = 118MB/s

而USB2.0的传输速率:

2000年制定的USB 2.0标准是真正的USB 2.0,被称为USB 2.0的高速(High-speed)版本,理论传输速度为480 Mbps,即60 MB/s,但实际传输速度一般不超过30 MB/s,采用这种标准的USB设备也比较多。

解决:

import cv2
cap = cv2.VideoCapture(0, cv2.CAP_V4L1)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))

MJPG 格式是motion jpeg,也就是将视频的每一帧都按照jpg格式压缩了,数据量大大降低。然而还有一个问题是,不知道默认的图像质量是多少,可不可以设置。后面需要的时候再研究吧。。。

opencv 设置摄像头采集图像编码格式

标签:图像编码   帧率   理论   有一个   port   linu   usb   rcc   rop   

原文地址:https://www.cnblogs.com/jmelody/p/12455851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!