第一步:功能说明
根据像素生成一张图片
第二步:结果图显示
第三步:代码展示
第四步:代码中重要函数解释
1.imwrite(para1,param2,param3);
IMwrite共有三个参数,其中至少要有两个参数,第一个是显示窗口名,第二个是图片数据。
参数params是用来设置对应图片格式的参数的,因为一般情况下这些图片格式都是经过了压缩的,这里就是设置这些压缩参数来控制图片的质量。该参数是一个vector<int>类型,里面分别存入paramId_1, paramValue_1, paramId_2, paramValue_2, ... 也就是说存入一对属性值。如果不设置该参数的话,则程序会自动根据所保存的图像格式采用一个默认的参数。
这里主要就是用到了 imwrite("要存的图像名字.格式",imgsrc,para),主要讲一下这个para,它是个vector<int>类型。这个参数有三种,可以是:
1、JPEG,参数为CV_IMWRITE_JPEG_QUALITY,它的值是从0到100,值越小压缩的越多,默认值是95.
2、PNG,参数为CV_IMWRITE_PNG_COMPRESSION,它的值是从0到9,值越大表示图片尺寸越小,压缩时间越长。默认值是3。
3、PPM,PGM或者PBM,参数为CV_IMWRITE_PXM_BINARY,它的值是0或者1。默认值是1。
2.C++中push_back()函数解释
push_back()函数的用法
函数将一个新的元素加到vector的最后面,位置为当前最后一个元素的下一个元素
push_back() 在Vector最后添加一个元素(参数为要插入的值)
//在vec尾部添加10
vector vec;
vec.push_back(10);
//在容器中添加10
int num =10;
vector vec;
vec.push_back(num);
或者再string中最后插入一个字符;
stringstr;
str.push_back('d');
类似的:
pop_back() //移除最后一个元素
clear() //清空所有元素
empty() //判断vector是否为空,如果返回true为空
erase() // 删除指定元素
3.程序解释
之前对程序不是很明白,现在解释下这三个函数,我的解释“无损保存”应该是有问题的
compression_params.push_back(IMWRITE_PNG_COMPRESSION); 这一句话的意思是选择PNG图片
compression_params.push_back(9); 而这一句话的意思就是选择图片的质量(在这里的数字代表压缩比的意思)
因为指用imwrite的话,有些格式会自带压缩,使图片容量急剧减小,所以要用上面的三句话,来调整图片。