图像的保存
OpenCV提供imwrite()函数用于将Mat类矩阵保存成图像文件
imwrite()函数原型:
bool imwrite(const String & filename,
InputArray img,
Const vector<int>& params = vector<int>()
)
- filename:保存图像的地址和文件名,包含图像格式
- img:要保存的Mat类矩阵变量
- params:保存图片格式属性设置标志
该函数将Mat类矩阵保存成图像文件,保存成功则返回ture,否则返回false
可以保存的图像格式参考 图像的读取与显示-imread()函数 可读取的图像格式
该函数通常只能保存8位单通道图像和3通道BGR图像,但是可以更改第3个参数保存成不同格式
- 16位无符号图像(CV_16U)可以保存成PNG、JPEG、TIFF格式
- 32位浮点(CV_32F)可以保存成PFM、TIFF、OpenEXR和Padiance HDR格式
- 4通道(Alpha通道)可以保存成PNG格式
第3个参数一般不需要填写,保存成指定格式只需在第一个参数后面更改文件后缀
imwrite()函数中第3个参数设置方法
vector <int> compression_params;
compression_params.push_back(IMWRITE_PNG_COMPRESSION); //PNG格式图像压缩标志
compression_params.push_back(9); //设置最高压缩质量
imwrite(filename,img,compression_params);
imwrite()函数第3个参数标志及作用
| 标志参数 | 简记 | 作用 |
|---|---|---|
| IMWRITE_JEPG_QUALITY | 1 | 保存成JPEG格式的文件的图像质量,分成0~100等级,默认95 |
| IMWRITE_JEPG_PROGRESSIVE | 2 | 增强JPEG格式,启用为1,默认值为0 |
| IMWRITE_JEPG_OPTIMIZE | 3 | 对JPEG格式进行优化,启用为1,默认参数为0 |
| IMWRITE_JEPG_LUMA_QUALITY | 5 | JPEG格式文件单独的亮度质量等级,分为0~100,默认为0 |
| IMWRITE_JEPG_CHROMA_QUALITY | 6 | JPEG格式文件单独的色度质量等级,分成0~100,默认为0 |
| IMWRITE_PNG_COMPRESSION | 16 | 保存成PNG格式文件压缩级别,0~9,默认为1 |
| IMWRITE_TIFF_COMPRESSION | 259 | 保存成TIFF格式文件压缩方案 |