(06)生成渐进图片(主要是四通道Alpha讲解)

第一步:功能说明

根据像素生成一张图片

第二步:结果图显示

这应该是个黑色的图片


四通道图片

第三步:代码展示



第四步:代码中重要函数解释

1.imwrite(para1,param2,param3);

IMwrite共有三个参数,其中至少要有两个参数,第一个是显示窗口名,第二个是图片数据。

参数params是用来设置对应图片格式的参数的,因为一般情况下这些图片格式都是经过了压缩的,这里就是设置这些压缩参数来控制图片的质量。该参数是一个vector类型,里面分别存入paramId_1, paramValue_1, paramId_2, paramValue_2, ... 也就是说存入一对属性值。如果不设置该参数的话,则程序会自动根据所保存的图像格式采用一个默认的参数。

这里主要就是用到了 imwrite("要存的图像名字.格式",imgsrc,para),主要讲一下这个para,它是个vector类型。这个参数有三种,可以是:

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的话,有些格式会自带压缩,使图片容量急剧减小,所以要用上面的三句话,来调整图片。

你可能感兴趣的:((06)生成渐进图片(主要是四通道Alpha讲解))