题目:在opencv中生成透明图形的方法
程序:
#include <vector>#include <stdio.h>#include<opencv2/opencv.hpp>using namespace cv;using namespace std;// 描述:创建带alpha通道的Matvoid 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(IMWRITE_PNG_COMPRESSION); compression_params.push_back(9); //显示图片 try { imwrite("E:\\code\\图片\\3.jpg", mat, compression_params); imshow("生成的jpg图", mat); fprintf(stdout, "jpg图片文件的alpha数据保存完毕~\n可以在工程目录下查看由imwrite函数生成的图片\n"); waitKey(0); } catch (runtime_error& ex) { fprintf(stderr, "图像转换成PNG格式发生错误:%s\n", ex.what()); return 1; } return 0;}
运行效果图:
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow