OpenCV — возможные варианты сжатия изображений

спасибо, что нашли время, чтобы прочитать мой пост.

Я работаю над небольшим проектом, который идет хорошо, но в качестве упражнения по оптимизации я хотел бы уменьшить размер некоторых файлов JPEG, которые я вывожу. На данный момент у меня есть .jpg размером 600 x 400, что составляет около 80 КБ.

Я читал о 32-битных, 8-битных изображениях со знаком, без знака, с плавающей точкой и символом, а также с цветовыми пространствами BGR и YUV, и я не уверен, какие факторы больше всего влияют на размер.

Может ли кто-нибудь предложить, где я могу начать уменьшать размер этого файла?

Я, конечно, поиграю и проведу свои собственные тесты, чтобы найти правильное соотношение качества изображения и размера файла.

Заранее большое спасибо, Кай


person Kay Warner    schedule 06.03.2013    source источник


Ответы (1)


звучит так, будто вы хотите сжать изображения при записи на диск.

вот для jpeg:

std::vector<int> params;
params.push_back(CV_IMWRITE_JPEG_QUALITY);
params.push_back(100);   // that's percent, so 100 == no compression, 1 == full 
cv::imwrite("my.jpg",image,params);

а вот для png:

std::vector<int> params;
params.push_back(CV_IMWRITE_PNG_COMPRESSION);
params.push_back(9);   // that's compression level, 9 == full , 0 == none
cv::imwrite("my.png",image,params);
person berak    schedule 06.03.2013
comment
berak большое спасибо за это, это именно то, что мне нужно! Код долгих лет и процветания! - person Kay Warner; 07.03.2013