压缩opencv(imwrite)上的图像.如何明确设置压缩因子?

Eve*_*iar 6 c++ graphics opencv image vector

我想知道是否有一种方法可以在opencv上压缩图像时轻松指定压缩因子,而无需声明虚拟矢量.如果我声明一个向量p(类似于这个讨论),但只包含2个项目,这是imwrite所采用的,我可以进行调用:

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

imwrite("compressed.jpg", img, p);
Run Code Online (Sandbox Code Playgroud)

以上工作正常.但是,我想在循环中使用多个压缩因子压缩相同的图像.有没有办法将参数显式传递给imwrite?就像是:

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

正如旁注,函数头是:

bool imwrite(const string& filename, const Mat& img, const vector<int>& params=vector<int>());
Run Code Online (Sandbox Code Playgroud)

谢谢!

更新: 激活C++ 0x后,我可以将内联显式定义的向量传递给函数.

Eve*_*iar 3

正如所建议的,激活 C++0x 允许我将显式定义的内联向量传递给函数。这解决了这个问题。