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服务老曹4 分钟前
解耦安防黑盒:基于 Docker 的国标 GB28181 与 RTSP 统一接入 AI 视频管理平台架构设计(附源码交付与边缘计算实践)
人工智能·docker·音视频
_李小白4 分钟前
【android opencv学习笔记】Day 33: 直线检测之图像轮廓检测
android·opencv·学习
初中就开始混世的大魔王12 分钟前
7 Fast DDS-持久化服务
c++·人工智能·中间件·自动驾驶·信息与通信
云边有个稻草人15 分钟前
时序智能新范式:TimechoAI 大模型赋能工业时序数据全链路分析
人工智能·apache iotdb·时序大模型·timechoai·企业级时序数据解决方案·工业时序数据分析·时序 ai 赋能
weixin_3077791316 分钟前
从工具到协作者:AI在后端研发中的流程重构与组织赋能
人工智能·后端·python·算法·自动化
云草桑19 分钟前
.NET10+AI 架构师全套实战学习文档(含源码、案例、面试题、项目源码)
人工智能·学习·ai·.net
却道天凉_好个秋19 分钟前
HEVC(十四):再谈RDO
计算机视觉·hevc·码率控制·rdo
装不满的克莱因瓶21 分钟前
循环神经网络及LSTM——从序列建模到长期依赖记忆机制
人工智能·pytorch·python·rnn·深度学习·神经网络·lstm
ai产品老杨22 分钟前
突破安防碎片化僵局:基于 Docker 与边缘计算的 AI 视频管理平台异构架构设计(附 GB28181/RTSP 统一接入与源码交付)
人工智能·docker·边缘计算
大江东去浪淘尽千古风流人物24 分钟前
【MASt3R-SLAM】从DUSt3R到MASt3R-SLAM:基于3D重建先验的实时稠密SLAM系统演进与深度解析
计算机视觉·数学建模·参数化模型·smpl·手部重建·mano·3d手部模型