1,什么是Mat
Mat其实是一个c++的类,本质是一个矩阵,但相对于我们线性代数中的矩阵还多了矩阵头,整个Mat的结构如下:

顺便补充一下opencv中的数据类型:

除了引用次数之外,其他的数据应该都得经常用emmm
2,Mat怎么用?
好问题,Mat其实也可以理解成一种数据类型,像我们平常使用int a = 1或者float b = 2.0类似,我们可以使用以下几种方法来创建Mat类:





有点多,没关系,其实前面几个都是一样的,只不过是写法上的区别罢了,本质还是需要输入矩阵的行数和列数,再补充数据类型以及具体数据。
回到代码上,最常用的就下面这两个:
1 | //格式:(行,列,数据类型,每个数据各个通道中的数据) |
3,创建Mat类后怎么使用数据
同样类似于int a = 1,我们创建一个变量的是为了使用它。在opencv中要使用at方法来读取Mat中的数据:

注意到在读取单通道数据时我们进行了一次(int)的强制类型转换,这是因为原本矩阵中的数据为unchar类型,保存出来的value要变成int类型
例程:
1 |
|