我想知道是否有一种方法可以轻松地在opencv上压缩图像时指定压缩因子,而不必声明虚拟 vector 。如果我声明一个 vector p(类似于this discussion),但是只包含2个项,而这正是imwrite的要求,那么我可以进行调用:

vector<int> 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<int>& params=vector<int>());

谢谢!

更新:
激活C++ 0x之后,我可以将显式定义的 vector 内联传递给该函数。

最佳答案

如建议的那样,激活C++ 0x可使我将显式定义的 vector 内联传递给函数。这解决了问题。

07-24 21:35