如果硬件不是限制因素,拍摄大量高分辨率 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/