2011-08-29 65 views
6

我想知道是否有一种方法可以在opencv上压缩图像时轻松指定压缩系数,而无需声明虚拟向量。如果我宣布一个向量p(类似于this discussion),但只包含2项,这是imwrite需要什么,我可以拨打电话:在opencv上压缩图像(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后,我可以将明确定义的向量传递给该函数。

+1

你有C++ 11吗? –

+0

这是使用gcc版本4.5.2的虚拟机上运行的。 –

+2

如果你启用了C++ 0x支持,你可以在内部声明'std :: vector ({1,2})'。 –

回答

1

如上所述,激活C++ 0x允许我将明确定义的向量传递给函数。这解决了这个问题。