opencv生成一张图片

opencv也可以创造出一张照片,下面就是创造一张照片,并存放到项目文件夹下的示例

c 复制代码
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <vector>
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() {
	Mat mat(480, 640, CV_8UC4);
	createAlphaMat(mat);
	vector<int> compression_params;
	compression_params.push_back(IMWRITE_PNG_COMPRESSION);
	compression_params.push_back(9);
	imwrite("1.png", mat, compression_params);
	imshow("原图", mat);
	waitKey(0);
	return 0;
}

这个creatrAlphaMat函数参数是一个Mat对象的引用,这个函数用来填充一个OpenCV的Mat对象,使其成为一个带有Alpha通道的彩色图像。具体来说,它通过遍历图像的每一个像素,并根据像素的位置动态设置其RGBA(红、绿、蓝和Alpha)值来实现这一点。rgba的前三个元素就是设置红、绿、蓝三通道的值,最后一个元素用来设置照片的透明度。

在主函数里有一个vector compression_params;,这个compression_params主要是压缩参数,加上这个后可以对图像进行压缩,并且给用户更多的控制权。试过去掉这个也可以生成图像。

Vec4b类型表示每一个Vec4b对象中,可以存储4个字符型数据,可以用这样的类对象去存储---4通道RGB+Alpha的图。

对了主函数里Mat对象的参数必须是CV_8UC4,因为有个透明度的通道所以必须是三个色彩加上透明度。

代码运行后的截图

文件夹下的图片:

相关推荐
人工智能AI酱5 分钟前
【AI深究】高斯混合模型(GMM)全网最详细全流程详解与案例(附Python代码演示) | 混合模型概率密度函数、多元高斯分布概率密度函数、期望最大化(EM)算法 | 实际案例与流程 | 优、缺点分析
人工智能·python·算法·机器学习·分类·回归·聚类
我是小疯子668 分钟前
HybridA*算法:高效路径规划核心解析
人工智能·算法·机器学习
晨非辰9 分钟前
【数据结构入坑指南(三.1)】--《面试必看:单链表与顺序表之争,读懂“不连续”之美背后的算法思想》
数据结构·c++·人工智能·深度学习·算法·机器学习·面试
草莓熊Lotso12 分钟前
《算法闯关指南:优选算法--滑动窗口》--15.串联所有单词的子串,16.最小覆盖子串
开发语言·c++·人工智能·算法
阿里-于怀20 分钟前
Dify 官方上架 Higress 插件,轻松接入 AI 网关访问模型服务
网络·人工智能·ai·dify·higress
AI周红伟22 分钟前
周红伟:智能体构建,《企业智能体构建-DIFY+COZE+Skills+RAG和Agent能体构建案例实操》
大数据·人工智能
!chen30 分钟前
引入AI辅助的3D游戏美术工作流
人工智能·3d·游戏美术
码农三叔34 分钟前
(2-1)常用传感器与基础原理:视觉传感器+激光雷达
人工智能·机器人·人机交互·人形机器人
heimeiyingwang40 分钟前
向量数据库在大模型 RAG 中的核心作用与实践
数据库·人工智能·微服务
云道轩1 小时前
在Rocky Linux 上在线安装OpenClaw 2026.2.13
linux·运维·人工智能·智能体·openclaw