imwrite函数功能:用于将图像保存到指定的文件,可以为各种格式的图像。
函数原型:
bool cv::imwrite(const String & filename,InputArray img,const std::vector<int> & params = std::vector<int>() )
函数参数:
filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。img:要保存的图像。params:表示为特定格式保存的参数编码。
注意:
imwrite函数是基于文件扩展名选择图像的格式。通常,使用此功能只能保存8位单通道或3通道(带有BGR通道顺序)图像,但有以下例外:
对于PNG,JPEG2000和TIFF格式,可以保存16位无符号(CV_16U)图像。32位浮点(CV_32F)图像可以保存为PFM,TIFF,OpenEXR和Radiance HDR格式;使用LogLuv高动态范围编码(每像素4个字节)保存3通道(CV_32FC3)TIFF图像可以使用此功能保存带有Alpha通道的PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道最后。完全透明的像素应该将alpha设置为0,完全不透明的像素应该将alpha设置为255/65535。
如果格式,深度或通道顺序不同,请在保存之前使用Mat :: convertTo和cv :: cvtColor进行转换。或者,使用通用FileStorageI / O函数将图像保存为XML或YAML格式。
编码参数:
示例代码:
#include <opencv2/opencv.hpp>#include <iostream>int main(){cv::Mat srcImage;//加载图像srcImage = cv::imread("image.jpg",1);if (srcImage.empty()){std::cout << "图像加载失败!" << std::endl;return -1;}cv::imshow("主窗口", srcImage);//保存图像到当前项目cv::imwrite("save.jpg", srcImage);cv::waitKey(0);//销毁所有窗口cv::destroyAllWindows();return 0;}
代码结果: