标签:图像编码 帧率 理论 有一个 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格式压缩了,数据量大大降低。然而还有一个问题是,不知道默认的图像质量是多少,可不可以设置。后面需要的时候再研究吧。。。
标签:图像编码 帧率 理论 有一个 port linu usb rcc rop
原文地址:https://www.cnblogs.com/jmelody/p/12455851.html