Самый быстрый способ массового уменьшения изображений JPEG - PullRequest
2 голосов
/ 01 мая 2019

Если оборудование не является ограничивающим фактором, какой самый быстрый способ взять большое количество изображений в формате JPEG с высоким разрешением и уменьшить их все?Например, если у меня есть папка с изображениями в 20 000 jpeg, которые различаются по формату изображения, но все они довольно большие (около 4k разрешения), и я бы хотел изменить размер каждого изображения до 512x512.

Я пробовал Python pillow-simd с libjpegturbo и многопроцессорной обработкой на машине с довольно мощным процессором и графическим процессором V100 (хотя, я полагаю, не используется), и для выполнения этой работы все равно требуется около 90 минут,

Кто-нибудь знает метод уменьшения размера изображения, который может использовать преимущества мощного графического процессора или имеет некоторые другие существенные оптимизации скорости?Или это действительно современный уровень скорости уменьшения изображения?

1 Ответ

0 голосов
/ 01 мая 2019

В прошлом я выполнял некоторые тяжелые операции с изображениями. Существует платформа с открытым исходным кодом под названием 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 ++ будет работать лучше. Я выполнял обработку изображений в реальном времени с использованием OpenCV w / c ++, и он имел всю необходимую мощность для обработки со скоростью 36 кадров в секунду. При использовании Java выход составлял 4 кадра в секунду.

...