Сжатие изображений в открытом виде (imwrite). Как явно задать коэффициент сжатия?

Я задавался вопросом, можно ли легко задать коэффициент сжатия при сжатии изображений на opencv без объявления вектора манекена. Если я объявлю вектор p (аналогично этой дискуссии), но содержащий только 2 элемента, что иммрайтерует, то могу сделать вызов:

vector p;
p[0] = CV_IMWRITE_JPEG_QUALITY;
p[1] = 50; // compression factor

imwrite("compressed.jpg", img, p);

Все вышесказанное работает нормально. Однако, я хочу сжимать одну и ту же картинку с несколькими коэффициентами сжатия в цикле. Есть ли способ явно передать параметр для imwrite? Что-то вроде:

imwrite("compressed.jpg", img, {CV_IMWRITE_JPEG_QUALITY, factor}); // this doesn't work

В качестве примечания, заголовок функции:

bool imwrite(const string& filename, const Mat& img, const vector& params=vector());

Спасибо!

Update: После активации C++0x я могу передать в функцию вектор, явно заданный inline.

6
задан Community 23 May 2017 в 11:46
поделиться