opencv mat用法赋值克隆的操作和一些基本属性

//Mat基本结构 (头部 数据部分)

//赋值的话 就是修改了指针位置 但还是指向了原来数据 并没创建数据 本质上并没有变

//只有克隆或者拷贝时 它才会真正复制一份数据

//代码实现

//创建方法 - 克隆

//Mat m1 = src.clone();

//复制

//Mat m2;

//src.copyTo(m2);

//赋值法 修改了指针位置

//Mat m3=src;

//创建空白图像 方法

//Mat m4 = Mat::zeros(src.size(), src.type());

//Mat m5 = Mat::zeros(size(512,512),CV_8UC3);

//Mat m6 = Mat::zeros(size(512,512),CV_8UC3);

//Mat kernel=(Mat_<char>(3,3)<<0,-1,0,

//-1,5,-1,

//0, -1, 0);

Mat m3 = Mat::zeros(Size(8, 8), CV_8UC1);

Mat m3 = Mat::zeros(Size(8, 8), CV_8UC3);// CV_8UC1是类型

//cv_8uc1正是这些灰度值的基本数据类型之一,其中8表示数据量为8位,

//即1字节;u表示无符号类型;c表示char类型,即字符型;1表示每个像素只有1个色道,即灰度值。

std::cout << "width:" << m3.cols << "高度" << m3.rows

<<"channels通道数"<<m3.channels()<<std::endl;

修改为ones 结果如下

将数字改成3 输出结果变为1 0 0 1 0 0 1 0 0 1 0 0.........

好,把ones改回来,此时,若是想给通道数值赋值

//赋值

m3 = Scalar(127, 127, 127);

还可以创建成图片 代码修改为 Mat::zeros一定要有

结果为

增加代码

Mat m4 = m3;//赋值法 修改了指针位置

m4= Scalar(0, 255, 255);

imshow("图像", m3);//输出图像

注意看 输出的是m3,所以证明赋值法改变了指针位置

若代码为这样:
Mat m4 = m3.clone();

m4= Scalar(0, 255, 255);

imshow("图像3", m3);//输出原来m3蓝色图像

imshow("图像4", m4);//输出为黄色

Mat m4 = m3;//赋值法 修改了指针位置

相关推荐
ZTLJQ几秒前
基于机器学习的三国时期诸葛亮北伐失败因素量化分析
人工智能·算法·机器学习
赵钰老师31 分钟前
【Deepseek、ChatGPT】智能气候前沿:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测中的应用
人工智能·python·深度学习·机器学习·数据分析
AIGC-Lison31 分钟前
【CSDN首发】Stable Diffusion从零到精通学习路线分享
人工智能·ai·stable diffusion·aigc·sd
AI绘画咪酱32 分钟前
Stable Diffusion|Ai赋能电商 Inpaint Anything
人工智能·ai·ai作画·stable diffusion·sd·ai教程·sd教程
ruokkk33 分钟前
Spring AI MCP 客户端实战:轻松连接高德地图等工具
人工智能
_一条咸鱼_34 分钟前
AI Agent 工作原理深入剖析
人工智能
飞哥数智坊36 分钟前
AI编程实战:数据大屏生成初探
人工智能
蚝油菜花37 分钟前
Cua:Mac用户狂喜!这个开源框架让AI直接接管你的电脑,快速实现AI自动化办公
人工智能·开源
蚝油菜花38 分钟前
AutoAgent:无需编程!接入DeepSeek用自然语言创建和部署AI智能体!港大开源框架让AI智能体开发变成填空题
人工智能·开源
nuise_39 分钟前
李宏毅机器学习笔记06 | 鱼和熊掌可以兼得的机器学习 - 内容接宝可梦
人工智能·笔记·机器学习