C++ 在opencv上压缩图像(imwrite)。如何显式设置压缩因子?

C++ 在opencv上压缩图像(imwrite)。如何显式设置压缩因子?,c++,image,graphics,vector,opencv,C++,Image,Graphics,Vector,Opencv,我想知道在opencv上压缩图像时,是否有一种方法可以轻松指定压缩因子,而不必声明虚拟向量。如果我声明一个向量p(类似于),但只包含2项,这就是imwrite所采用的,那么我可以调用: vector<int> p(2); p[0] = CV_IMWRITE_JPEG_QUALITY; p[1] = 50; // compression factor imwrite("compressed.jpg", img, p); 作为旁注,函数标题为: bool imwr

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

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

imwrite("compressed.jpg", img, p);
作为旁注,函数标题为:

bool imwrite(const string& filename, const Mat& img, const vector<int>& params=vector<int>());
bool imwrite(常量字符串和文件名、常量Mat和img、常量向量和参数=vector());
谢谢

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

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

矢量压缩参数;
vector<int> compression_params;
compression_params.push_back(IMWRITE_JPEG_QUALITY);
compression_params.push_back(30);
compression_params.push_back(IMWRITE_JPEG_PROGRESSIVE);
compression_params.push_back(1);
compression_params.push_back(IMWRITE_JPEG_OPTIMIZE);
compression_params.push_back(1);
compression_params.push_back(IMWRITE_JPEG_LUMA_QUALITY);
compression_params.push_back(30);
imwrite('sample.jpg', img, compression_params);
压缩参数。推回(IMWRITE\U JPEG\U质量); 压缩参数向后推(30); 压缩参数向后推(IMWRITE\u JPEG\u PROGRESSIVE); 压缩参数向后推(1); 压缩参数向后推(IMWRITE\u JPEG\u优化); 压缩参数向后推(1); 压缩参数。推回(IMWRITE\U JPEG\U LUMA\U质量); 压缩参数向后推(30); imwrite('sample.jpg',img,压缩参数);
这是在gcc版本为4.5.2的VM上运行的,如果启用C++0x支持,可以说
std::vector({1,2})
inline.Yep,这就是它所需要的全部;)谢谢在回答中输入您的更新,并标记为“已回答”。
vector<int> compression_params;
compression_params.push_back(IMWRITE_JPEG_QUALITY);
compression_params.push_back(30);
compression_params.push_back(IMWRITE_JPEG_PROGRESSIVE);
compression_params.push_back(1);
compression_params.push_back(IMWRITE_JPEG_OPTIMIZE);
compression_params.push_back(1);
compression_params.push_back(IMWRITE_JPEG_LUMA_QUALITY);
compression_params.push_back(30);
imwrite('sample.jpg', img, compression_params);