功能:该函数是把程序中的Mat类型的矩阵保存为图像到指定位置。
函数形式:bool imwrite(const string& filename, InputArray img, const vector<int> ¶ms = vector<int>() )
参数列表:
filename:所需保存图像的文件目录和文件名,这里的文件名需要带有图像格式后缀。
img:img参数为图像数据来源,其类型为Mat.
params:用来设置对应图片格式的参数,因为一般情况下这些图片格式都是经过了压缩的,这里就是设置这些压缩参数来控制图片的质量。该参数是一个vector<int>类型,分别存paramid_1,paramValue_1,paramid_2,paramValue_2,
也就是说存入一对属性值。若不设置该参数,则程序会自动根据所保存的图像格式采用一个默认的参数。
程序应用示例1:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
Mat src;
Mat image;
string str = "./";
int main()
{
/*采用默认参数进行图片的保存*/
src = imread("test.jpg");
imwrite(str + "原图.jpg", src);//c版本中的保存图片为cvSaveImage()函数,c++版本中直接与matlab的相似,imwrite()函数。
imshow("src", src);
Rect rect(src.cols / 4, src.rows / 4, src.cols / 2, src.rows / 2);
image = src(rect);
imwrite(str + "截取原图中的一部分区域小图.jpg", image);
imshow("image", image);
return 0;
}
程序应用示例2:
通过修改imwrite的第三个参数params,可以改变图片的质量,例如:
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat img = imread("test.jpg");
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); //选择jpeg
compression_params.push_back(100); //在这里填入需要的图片质量
imwrite("test2.jpg", img, compression_params);
return 0;
}