我正在使用像这样的 IDS uEye 工业相机。它基本上以 23 fps(4 个 8 位通道)记录 1280 x 1024。由于一些可能的 USB 功率/带宽问题,我试图计算所需的相机带宽。所以我这样做了:
1280 * 1024 * 23 * 4 * 8 / (8 * 10^6) = ~120 MiB/s = ~115 MB/s
我通过检查捕获的 bmp 图像的大小确认了这一点:大约 5 MB,所以在 23 fps 时它给了我们 5*23 = 115 MB/s。澄清一下,我不是在录制视频流,而是在录制单独的帧。
然后我意识到这是一个 USB 2.0 相机,所以有 60 MB/s 的限制。甚至相机文档都说:
“理论上,这种模式可以传输高达 50 MByte/s 的数据,但在实践中,这个值几乎无法达到。高性能台式 PC 可以传输大约 40 MByte/s,大多数笔记本电脑或嵌入式 PC 系统甚至少于那个。”
所以我开始认为我缺少一些东西。我使用usbtop监控 USB 带宽,得到的值约为 4 MiB/s。那么,相机如何在 USB 2.0 总线上运行时每秒捕获 115 MB 的图像并且仅消耗 4 MB/s?是某种压缩吗?
通常,相机通过使用相机的内置固件进行去马赛克,并传输压缩格式,如 h.264、Mjpeg 或其他格式。假设某些专业和高级相机允许您请求 RAW 图像(通常为 YUV 格式),并且数字传感器的输出几乎总是在线性范围内每个分量 10 到 14 位之间,数字会有所不同。 .
因此,假设 YUV 输出并假设文档中提到的 10 位 ADC,带宽在 RAW 中将是这样的:
您可以在下一个链接中找到有关此内容的详细信息: https ://picamera.readthedocs.io/en/release-1.12/fov.html
但与您的上一条评论有关:
可能有某种压缩。
例如对于 rPi 相机,使用 V4L 驱动程序,您可以请求它工作的模式,以及每个模式下的 fps 选项:
干杯。