image - 批量缩小 jpeg 图像的最快方法

标签 image performance jpeg image-resizing downsampling

如果硬件不是限制因素,拍摄大量高分辨率 jpeg 图像并将它们全部缩小的最快方法是什么?例如,如果我有一个包含 20,000 张纵横比不同但都相当大(接近 4k 分辨率)的 jpeg 图像的文件夹,我想将每张图像的大小调整为 512x512。

我已经在一台配备强大 CPU 和 V100 GPU 的机器上尝试了 Python pillow-simd 与 libjpegturbo 和多处理(虽然我相信没有使用),完成这项工作仍然需要大约 90 分钟。

有谁知道可以利用强大的 GPU 或具有其他一些显着速度优化的图像缩小方法?或者这真的是当前图像缩小速度的最新技术水平吗?

最佳答案

我过去做过一些这种繁重的图像处理。有一个名为 OpenCV(计算机视觉)的开源框架,可与 Python、C++ 和 Java 配合使用。 OpenCV 使用矩阵 (MAT) 进行各种图像处理——调整大小是小菜一碟。这应该给你一个大概的想法。

代码的 Java 版本可能如下所示:

import static org.opencv.imgproc.Imgproc.*;
import static org.opencv.imgcodecs.Imgcodecs.imread;
import static org.opencv.imgcodecs.Imgcodecs.imwrite;

//loop over your array of files here
Mat src  =  imread(myFilePath);
Mat resizeimage = new Mat();
Size scaleSize = new Size(512,512);
resize(src, resizeimage, scaleSize , 0, 0, INTER_AREA);
imwrite("C:\\File\\input.jpg", resizeimage);

如果你想做超高速的图像处理,C++会更好。我使用带有 C++ 的 OpenCV 进行了实时电影图像处理,它具有以 36 帧/秒的速度处理所需的所有马力。使用 Java,输出是每秒 4 帧。

关于image - 批量缩小 jpeg 图像的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940870/

相关文章:

image - 哪里/如何在 spring mvc 中存储图像/文件

javascript - 延迟加载图像在 IE9 中不起作用(Jquery、航点)

iPhone - 获取指向 CGDataProvider 背后数据的指针?

algorithm - 线性方程的快速近似解?

python - 我是否正确地从此 mysqldump 中提取了 JPEG 二进制数据?

c++ - 在 C/C++ 中读取图像文件

ios - UIImagePickerController 返回比原始图像更大的图像

python - 使用opencv,如何去除透明图像中的非对象?

image - 使用烘焙数据解析 PNG 图像

c# - 使字符串的第一个字母大写(具有最佳性能)