生成透明通道及写出
#include <vector>
#include <stdio.h>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
//--------------------------------【createAlphaMat( )函数】--------------------------------
// 描述:创建带alpha通道的Mat
//-------------------------------------------------------------------------------------------------
void createAlphaMat(Mat &mat){
for(int i = 0; i < mat.rows; ++i) {
for(int j = 0; j < mat.cols; ++j) {
Vec4b&rgba = mat.at<Vec4b>(i, j);
rgba[0]= UCHAR_MAX;
rgba[1]= saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) *UCHAR_MAX);
rgba[2]= saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) *UCHAR_MAX);
rgba[3]= saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
}
}
}
int main( ){
Mat mat(480, 640, CV_8UC4);//创建矩阵,四个channel,每个通道有八个位
createAlphaMat(mat);//创建带alpha通道的Mat
vector<int>compression_params;//压缩参数
compression_params.push_back(IMWRITE_PNG_COMPRESSION);//PNG格式
compression_params.push_back(9);//质量是9,就是最高
try{//显示图片
imwrite("透明Alpha值图.png", mat, compression_params);//把图读入到MAT,第三个参数是传入的类型及质量
imshow("生成的png图",mat);//展示生成图
fprintf(stdout,"PNG图片文件的alpha数据保存完毕~\n
opencv第三章
最新推荐文章于 2022-12-13 08:12:55 发布
生成透明通道及写出#include <vector>#include <stdio.h>#include<opencv2/opencv.hpp>using namespace cv;using namespace std;//--------------------------------【createAlphaMat( )函数】---------...
摘要由CSDN通过智能技术生成