gpt4 book ai didi

c++ - 在 openCV 中快速将图像保存到磁盘

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:30 27 4
gpt4 key购买 nike

我正在使用 Basler 相机,并希望尽快将我以 1000x1000 像素抓取的图像写入磁盘。保持电影容器打开并保存为 .avi 并没有真正帮助(减慢 2 倍)并且保存单个图像甚至更慢。我目前正在使用 openCV cvVideoCreator 和 imwrite 函数。我的电脑应该足够快(Intel Xeon 3.6 GHz、64GB RAM、SSD)。有什么想法吗?

最佳答案

为了实现您的目标(以 50 FPS 或 150 MB/秒的速度保存彩色图像 (1K x 1K x 3)),您可能需要考虑多个因素(步骤)。

  1. 图像编码:大多数众所周知的图像格式,如 png、tif、jpg 都需要时间来编码图像(例如,在 OpenCV 中,使用 3.6 GHz 4 核 CPU,png 需要 5.7 毫秒,tif 需要 11.5 毫秒)甚至在将编码格式数据保存到磁盘之前转换为特定格式。

  2. 文件打开:与文件大小无关,这可能需要一些时间(例如,在 3.5"WD Black 上需要 1.5 毫秒)

  3. 文件写入:取决于文件大小,这可能需要一些时间(例如,在 3.5"WD Black 上需要 2.0 毫秒)

  4. 文件关闭:取决于文件大小,这可能需要很长时间(例如,在 3.5"WD Black 上需要 14.0 毫秒)

这意味着您必须在每个图像 20 毫秒内完成所有步骤以实现您的目标,正如我给出的计时示例,您可能无法使用 JPG 中的 OpenCV imwrite 实现您的目标,因为该库按顺序执行所有操作在单个线程中执行上述步骤。

我想你有几个选择

  1. 在 SSD 上写入 BMP 格式,因为其编码时间几乎为零(例如,小于 0.3 毫秒)

  2. 在单独的线程中执行上述一些步骤(例如,编码或文件关闭)。

特别是,文件关闭非常适合在单独的线程中运行,因为它可以与其他步骤异步完成。使用第二个选项、BMP 文件格式和更好的硬盘,我能够达到 400 MB/s 的保存带宽。

希望这对您和其他有类似目标的人有所帮助。

关于c++ - 在 openCV 中快速将图像保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47513099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com