opencv 设置摄像头采集图像编码格式
Posted jmelody
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 设置摄像头采集图像编码格式相关的知识,希望对你有一定的参考价值。
问题:
新到的摄像头在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 设置摄像头采集图像编码格式的主要内容,如果未能解决你的问题,请参考以下文章