Mat 类

本文详细介绍了OpenCV中的Mat类,包括Mat的组成、赋值、创建、特殊矩阵、遍历方法、读取和保存,以及常用函数如转置和矩阵反转。Mat是N维密集矩阵,适用于图像处理和计算机视觉中的矩阵操作。文章特别强调了浅拷贝和深拷贝的区别,以及at<>()函数、ptr指针和不同遍历方式的使用。
摘要由CSDN通过智能技术生成

目录

 

一 . introduction

二 .特点

1.组成

2.赋值

 

三 创建

1.type

2.create

四.特殊矩阵

 

五 Mat遍历

1. at<>()  函数

2.ptr 指针

3. 遍历写法

 

六 读取和保存


一 . introduction

mat是N维 dense matrix,稀疏matrix 在opencv中是  cv::SparseMat ,常用于histogram中。

下图为灰度图的存储方式;

  

下图为 RGB 图像的存储方式,注意其存储顺序为 BGR (Blue->Green->Red) 

 

二 .特点

1.组成

 Mat包含matrix header 和矩阵指针 pointer to  matrix ,

header 如下

int flags;  //signaling the context of the matric
int dims;    //dimensions
int rows,cols;

//size是一个结构体,定义了Mat矩阵内数据的分布形式,数值上有关系式:

// image.size().width==image.cols;        image.size().height==image.rows   

MatSize size;

MatStep step;

pointer is shown below;

uchar * data;

2.赋值

1.浅copy

不复制数据,只创建矩阵头,数据共享。(更改a b c任意一个对另外两个都会产生影响)

Mat a;
Mat b=a;    //'copy' a to b
Mat c(a);   //'copy' a to c

2.深copy

Mat a;
Mat b=a.clone();  //copy a to b

Mat c;
a.copyTo(c)   //copy a to b

 

三 创建

1.type

mat的格式为 CV_{8U, 8S, 16S, 16U, 32S, 32F, 64F}C{1, 2, 3} 或

                     CV_{8U, 16S, 16U, 32S, 32F, 64F}C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值