要熟练使用OpenCV,首先最重要的就是学会Mat数据结构,下面详细介绍一下其应用。
在opencv中Mat被定义为一个类,也可以把它看作一个数据结构,它是以矩阵的形式来存储数据的。这里先介绍一下Mat的基本属性:
Mat的常见属性
属性 | 说明 |
---|---|
data | uchar型的指针。Mat类分为了两个部分:矩阵头和指向矩阵数据部分的指针,data就是指向矩阵数据的指针。 |
dims | 矩阵的维度,例如5*6矩阵是二维矩阵,则dims=2,三维矩阵dims=3. |
rows | 矩阵的行数 |
cols | 矩阵的列数 |
size | 矩阵的大小,size(cols,rows) |
channels() | 矩阵元素拥有的通道数,例如常见的彩色图像,每一个像素由RGB |
type() | 表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+(通道数)如:,CV_8UC3 |
depth() | 矩阵中元素的一个通道的数据类型,这个值和type是相关的。例如 type为 CV_8UC3,一个3通道的16位的有符号整数。那么,depth则是CV_8UC |
elemSize() | 矩阵一个元素占用的字节数(不区分通道,即多个通道的总和) |
elemSize1() | 矩阵一个元素每个通道占用的字节数(区分通道,单个个通道的值) |
flags | 一个int型数字,保存了许多有用的信息,flags说明; |
Mat有非常多的创建方法,下面介绍几种常见的方式:
1、Mat M
创建一个矩阵头,没有数据。
2、Mat