【发布时间】:2020-09-03 02:52:35
【问题描述】:
我必须使用 jpeg 压缩一个非常大的图像(图像大小> 100 MB)。
我现在使用 openCV 3.4.3 进行编码(openCV 使用 libjpeg-turbo 1.5),我需要 750 [ms] 获取 129 MB RGB 图像(7250 * 621 * 3),但它使用单线程。
我想使用线程加速 jpeg 编码(和解码)。
怎么做?
我使用的是 Windows 机器,
如果有帮助,我可以使用 IPP(英特尔的)。
【问题讨论】:
-
您可以尝试
libvipslibvips.github.io/libvips/API/current/using-from-cpp.html 或者您可以将您的应用程序线程化到不同的维度,即,而不是由多个线程一次处理一个图像,每个线程处理同一图像的不同部分,而是一次处理多个图像,每个图像由一个线程处理。 -
您这样做的吞吐量目标是多少(基准性能节奏 - 每秒图片数)?
-
@user3666197,我只有一张大图。目标是以尽可能短的延迟完成任务。我的用户正在等待他的输出
-
一些 ImageMagick 例程是多线程的,但我不知道是否转换为 JPEG。可能值得一试。
-
根据文件的内容,它可能会在磁盘上创建一个相当大的文件——比如 70MB——所以如果你的电脑有只能做 150MB/s 的传统旋转磁盘,你可以有 500ms 的 I/ O。也许尝试在 RAMdisk 上写入 - 就像 DataRam 的那样,看看是否有帮助。
标签: c++ parallel-processing jpeg image-compression