当前位置: 首页 > news >正文

Linux36:Mat结构体

目录

1.Mat介绍

2.Mat的深度和字节类型

1.灰度图

2.二值图像

3.三通道图像

4.四通道图像

2.1.单通道分类

2.2.双通道分类

2.3.三通道分类

2.4.四通道分类:

3.Mat的创建和构造方法

3.1.Mat(int rows, int cols, int type);

3.2.Mat(Size size, int type);

3.3.Mat(int rows, int cols, int type, const Scalar& s);

3.4.Mat::zeros(rows,cols,type);

3.5.Mat::ones(rows,cols,type);

4.代码实现OPENCV创建Mat


1.Mat介绍

在OPENCV中,Mat是整个图像存储的核心也是所有图像处理的最基础的类。Mat主要存储图像的矩阵类型,包括向量、矩阵、灰度或者彩色图像等等。Mat的对象可以分成矩阵头和矩阵数据两个大部分,矩阵头是存储图像的长度、宽度、色彩信息等头部信息;矩阵数据则是存储具体的图像数据。若开发者想对OPENCV的Mat中的信息进行修改,则是改变像素信息的数据部分。

Mat的输出一般包含图像的宽度、高度、通道数量、通道深度、字节类

2.Mat的深度和字节类型

unsigned signed float

CV_16F

  • 含义:16位浮点数
  • 范围:半精度浮点数
  • 用途:在OpenCV的较新版本(尤其是在OpenCV 4.x及以后的DNN模块)中为了支持AI加速(如GPU上的FP16计算)和减少内存占用而引入的重要类型。

上面是Opencv的字节类型和通道数的定义,在OPENCV中通常分为四个通道和8种数据类型。分别是单通道(灰度图)、双通道(二值图像)、三通道(RGB彩色图像)、四通道(Alpha的四通道图像)。

1.灰度图

灰度图又称之为灰阶图,颜色介于白色和黑色之间按对数关系分为若干等级,这种图像称之为灰度。灰度分为256个阶

2.二值图像

二值图像中的图像中每一个像素只有两个值分别是0和1,其中0表示黑色、1表示白色

3.三通道图像

三通道(RGB)图像也就是我们所说的RGB图像,所以三通道图像可以用来彩色图像。

4.四通道图像

四通道(ARGB)也就是在彩色图像中

2.1.单通道分类

  • CV_8UC1:指的是一个8位无符号整型单通道矩阵CV
  • CV 32SC1:指的是一个32位整型单通道矩阵
  • CV_32FC1:指的是一个32位浮点型单通道矩阵
  • CV_64FC1:指的是一个64位浮点型单通道矩阵
  • CV_16SC1:指的是一个16位整型单通道矩阵

2.2.双通道分类

  • CV_8UC2:指的是一个8位无符号整型双通道矩阵
  • CV_32SC2:指的是一个32位整型双通道矩阵
  • CV_32FC2:指的是一个32位浮点型双通道矩阵
  • CV_64FC2:指的是一个64位浮点型双通道矩阵
  • CV_16SC2:指的是一个16位整型双通道矩阵

2.3.三通道分类

  • CV8UC3:指的是一个8位无符号整型三通道矩阵
  • CV32SC3:指的是一个32位整型三通道矩阵
  • CV_32FC3:指的是一个32位浮点型三通道矩阵
  • CV_64FC3:指的是一个64位浮点型三通道矩阵
  • CV16SC3:指的是一个16位整型三通道矩阵

2.4.四通道分类

  • CV_8UC4:指的是一个8位无符号整型四通道矩阵
  • CV_32SC4:指的是一个32位整型四通道矩阵
  • CV_32FC4:指的是一个32位浮点型四通道矩阵CV
  • CV_64FC4:指的是一个64位浮点型四通道矩阵
  • CV_16SC4:指的是一个16位整型四通道矩阵

3.Mat的创建和构造方法

Mat的创建一般分为五种方式,分别是Mat(int rows, int cols, int type)、Mat(Size size, int type)Mat::zeros(Size(width,height),type)下面我将把三种构造的方式都详细说一遍。

3.1.Mat(int rows, int cols, int type);

重载的构造函数,这个构造函数在创建的时候,提供矩阵的大小,分别是rows、cols以及存储类型type

rows行数,也指的是图像的高度,height。

cols列数,也指的是图像的宽度,width。

type通道类型,具体的看上面的图

示例:Mat t1 = Mat(300,300,CV_8UC1),这指的是创建一个width:300,height:300,单通道的灰度图像.

3.2.Mat(Size size, int type);

重载的构造函数,这个构造函数在创建的时候,需要传入Size类和类型。

第一个传参:Size结构体,Size(width,height)

第二个传参:type通道类型,具体的看上面的图

示例:Mat t2 = Mat(Size(300,300),CV_8SC3),这指的是创建一个width:300,height:300,三通道的灰度图像

3.3.Mat(int rows, int cols, int type, const Scalar& s);

重载的构造函数,这个构造函数在创建的时候,提供矩阵的大小,分别是rows、cols、存储类型type、还有Scalar颜色标量。

第一个传参:rows行数,也指的是图像的高度,height。

第二个传参:cols列数,也指的是图像的宽度,width。

第三个传参:type通道类型,具体的看上面的图

第四个传参:Scalar颜色标量,Scalar(v0,v1,v2,v3),v0,v1,v2,v3分别对应OPENCV颜色分量的四个值

示例:Mat mat = Mat(300,300,CV_8UC3,Scalar(255,255,255));表示的是创建一个cols:300,rows:300,三通道的灰度,颜色标量为白色的图像

3.4.Mat::zeros(rows,cols,type);

重载的构造函数,这个构造函数在创建的时候,提供矩阵的大小,分别是rows、cols以及存储类型type。ZROS相当于创建一张黑色的图片,每个像素通道为0,并且Scalar(0,0,0)。

第一个传参:rows行数,也指的是图像的高度,height。

第二个传参:cols列数,也指的是图像的宽度,width。

第三个传参:type通道类型,具体的看上面的图

示例: Mat::zeros(300,300,CV_8SC3);,这指的是创建一个width:300,height:300,三通道的彩色图像,Scalar(0,0,0),相当于 Mat mat = Mat(300,300,CV_8SC3,Scalar(0,0,0));

3.5.Mat::ones(rows,cols,type);

重载的构造函数,这个构造函数在创建的时候,提供矩阵的大小,分别是rows、cols以及存储类型type。ONES相当于每个像素第一个通道为1,后面两个通道为0。

第一个传参:rows行数,也指的是图像的高度,height。

第二个传参:cols列数,也指的是图像的宽度,width。

第三个传参:type通道类型,具体的看上面的图

示例: Mat::ones(300,300,CV_8SC3),这指的是创建一个width:300,height:300, 三通道的彩色图像,Scalar(1,0,0),这等同于Mat mat = Mat(300,300,CV_8SC3,Scalar(1,0,0));

4.代码实现OPENCV创建Mat

4.1. 实现Mat构造,并保存到本地

这指的是创建一个width:300,height:300,三通道的灰度图像, 粉色的图像

4.2. 利用Mat(Size size, int type)构造生成矩阵数据,并保存到本地

这指的是创建一个width:256,height:256,三通道的图像。

然后再用t1 = Scalar(255,0,0);把矩阵变成蓝色

最后把矩阵保存到本地


4.3. 利用Mat::zeros(rows,cols,type)构造生成矩阵数据,并保存到本地

利用zeros去创建矩阵,ZROS相当于创建一张黑色的图片,每个像素通道为0,并且Scalar(0,0,0)。

然后把图片保存到本地

4.4. 利用Mat::ones(rows,cols,type)构造生成矩阵数据,并保存到本地

利用ones去创建矩阵,ONES相当于每个像素第一个通道为1,后面两个通道为0,相当于Scalar(1,0,0))

然后把图片保存到本地

http://www.jsqmd.com/news/463107/

相关文章:

  • 光伏三相并网系统:控制策略与仿真结果
  • 南昌服务业抖音代运营优质服务商推荐指南 - 资讯焦点
  • DeepSeek/豆包/Gemini去AI味指令合集,附2026论文降AI工具测评(降至5%)
  • 北京/上海/深圳等六城高端腕表养护哪里好 日常养护+突发急救+品牌周期+正规门店 - 时光修表匠
  • PMSM控制系列文章-7.MTPV及整体控制架构
  • 2026论文降AI全攻略:DeepSeek等大模型指令与测评,AIGC率80%降至5%
  • 钻井工程师的COMSOL实战手记
  • LightTools照明设计进阶:从仿真文件到优化引擎的实战解析
  • 颠覆想象!汉玛克迎新盛典见证超越之年 - 资讯焦点
  • IT 培训哪家就业好? - 资讯焦点
  • **Hive**:基于 Hadoop 的数据仓库工具,提供类 SQL(HiveQL)接口,将查询转换为 MapReduce/Tez/Spark 任务
  • mmdetection视觉解析实战:从检测框渲染到特征热力图生成
  • window服务
  • 2026年四川硅酸盐防火板批发厂家榜单 全品类供应 防火防潮 适配工程家装多场景 - 深度智识库
  • 怎么去AI味?DeepSeek+豆包+Gemini指令与论文降AI工具实测(80%降至5%)
  • 【VCS】利用libmap优化仿真效率:从重名模块到黑盒加速
  • 2026最新云南雕塑供应商推荐!昆明优质雕塑批发厂家权威榜单发布 - 十大品牌榜
  • Sherlock插件多相机管理技巧:如何同时控制多台工业相机(附.bat脚本示例)
  • 我是开发,正常企业软件开发流程,最佳实践中,我需要写什么测试呢?
  • 激光清洗技术原理及纳秒脉冲激光的有限元仿真研究
  • 图灵课堂师资靠谱吗? - 资讯焦点
  • 七、Redis之IO多路复用
  • 手把手教你用Vue3+Spring Boot搭建开源电子签章系统(附完整代码)
  • 图灵课堂 AI 全栈课怎么样? - 资讯焦点
  • Drools规则引擎实战:如何用5分钟搞定电商优惠规则配置(附完整代码)
  • Nanbeige4精读
  • Java面试题--ArrayList 为什么默认容量是 10?
  • 5G-A+北斗如何重塑低空物流?实测无人机配送避障与厘米级定位
  • cc-connect手机控制Claude:Claude Code 推出轻量级openclaw
  • 2026年用户口碑最佳高新技术企业认定公司推荐:五家服务商真实案例与成效解析 政策驱动创新升级 - 品牌推荐