2013-03-06 2 views
4

спасибо, что нашли время, чтобы прочитать мое сообщение.OpenCV - Возможные варианты сжатия изображения

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

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

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

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

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

ответ

10

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

вот это для 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); 
+0

berak спасибо вам большое за то, что это именно то, что мне нужно! Код длинный и процветающий! –