简介
首先来看一下Mat类的源码简介:
The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It
can be used to store real or complex-valued vectors and matrices, grayscale or color images, voxel
volumes, vector fields, point clouds, tensors, histograms (though, very high-dimensional histograms
may be better stored in a SparseMat ).
Mat类表示一个n维密集的单通道或多通道数列。它可以用来存储实数或复数向量和矩阵,灰度或彩色图像,卷积,向量场,点云,张量,直方图(不过,非常高维的直方图最好存储在SparseMat)。
由介绍可以看出,Mat类在OpenCV中本质上是一个存数字的矩阵类(matrix),扩展到应用场景上可以存储图像点云等,因为这些东西本质上就是矩阵。例如图像就是多通道的二维数组。
构造
首先一个类型最基础的就是如何构造。Mat类的构造函数有多达20多种。不一一列出,先列几个常用的,后续有接触再添加:
第一种:Mat(int _rows, int _cols, int _type)
最简单的矩阵构造,定义好行、列、数据类型。
Mat a(2, 3, CV_8UC1);
cout<<a<<endl;
输出:
[ 0, 0, 0;
0,