Сжатие Mat изображения

116
20 сентября 2019, 10:20

Всех приветствую.

В процессе работы с OpenCV столкнулся с такой проблемой:

Рабочий стол, размером 1920x1080, весит аж 382784 байтов!

Начал искать в документации способ сжатия изображения.

Нашел такую статью:

https://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html#bool%20imwrite(const%20String&%20filename,%20InputArray%20img,%20const%20vector%3Cint%3E&%20params)

В ней нашел такой код:

C: int cvSaveImage(const char* filename, const CvArr* image, const int* params=0 ) Parameters: filename – Name of the file. image – Image to be saved. params – Format-specific save parameters encoded as pairs paramId_1, paramValue_1, paramId_2, paramValue_2, ... . The following parameters are currently supported:

For JPEG, it can be a quality ( CV_IMWRITE_JPEG_QUALITY ) from 0 to 100 (the higher is the better). Default value is 95.

Как мне можно его сюда прикрутить?

Что-то типа такого:

int quality = 70;

imencode(".jpg", s, buf, quality);

Код:

Mat s;
vector<uchar> buf;
while (1) {
    r->GetDesktopMat(s);
    imencode(".jpg", s, buf);
    cout << buf.size() << endl; // 382784 - 1920x1080 resolution
}
Answer 1

Об описании параметров и способе их задания Вы можете прочесть здесь.

Mat s;
vector<uchar> buf;
vector<int> opts(2);
opts[0] = cv::IMWRITE_JPEG_QUALITY;
opts[1] = 70;
while (1) {
    r->GetDesktopMat(s);
    imencode(".jpg", s, buf, opts);
}
READ ALSO
Потоки в с++, лишний поток [закрыт]

Потоки в с++, лишний поток [закрыт]

Имеется простейшие код создания потока:

76
Шифрование файлов в windows

Шифрование файлов в windows

Задание звучит следующим образом:

124
Сжать .avi или .mp4 реально ли?

Сжать .avi или .mp4 реально ли?

возник вопрос: Возможно ли сжать видеофайлы или видеопоток? Пытался использовать lz4 для сжатия данных, сначала использовал этот метод сжатия...

100
Неожиданное потребление памяти

Неожиданное потребление памяти

Пишу алгоритм бинарной сортировки (в целях обучения)Компилятор - MinGW-w64 с флагом оптимизации -o0

114