图像载入,显示和输出相关代码

本文介绍了一个使用OpenCV创建带有Alpha通道的PNG图像的方法。通过C++代码实现,该程序为每个像素生成特定的RGBA值,并将生成的图像保存为PNG格式。此外,还展示了如何设置压缩参数以提高图像质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <vector>  
#include <stdio.h>  
#include<opencv2/opencv.hpp>  
   
using namespace cv;  
using namespace std;  
   
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( )  
{  
//创建带alpha通道的Mat  
Mat mat(480, 640, CV_8UC4);  
createAlphaMat(mat);  
   
vector<int> compression_params;  
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);  
compression_params.push_back(9);  
   
try{  
        imwrite("F:/透明Alpha值图.png", mat, compression_params);  
}  
catch(runtime_error& ex) {  
        fprintf(stderr,"图像转换成PNG格式发生错误:%s\n", ex.what());  
        return 0;  
}  
   
fprintf(stdout,"PNG图片文件的alpha数据保存完毕~\n");  
return 1;  
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值