OpenCV中通过Mat类完成对图像的基本操作,包括对图像的写入、输出和处理都依赖于对Mat矩阵的操作。OpenCV通过将图像实例化为矩阵的方式,使得我们可以在最大的限度内对图像进行处理和更改,关于这部分之后我们之后再详细的进行说明。那么,我们就从Mat类和图像的输入输出开始吧。
一、Mat类的创建
在调用OpenCV类之前,需要载入库文件
static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);};
第一章的时候我们写过一小段简单的代码创建一个对角矩阵。我们很容易就能实例化一个Mat类对象:
Mat test = new Mat();
这样可以生成一个空的矩阵,通过调用Mat下的方法,也可以生成零矩阵,值全唯一的矩阵等(Mat.diag、Mat.eye、Mat.ones、Mat.zeros)
同样,我们可以在Mat类的同时设置矩阵的基本参数:
Mat test = new Mat(3, 3, CvType.CV_8UC1);
第一个参数代表矩阵的行数(rows),第二个参数代表矩阵的列数(cols),第三个参数(type)代表矩阵中像素点的位数和通道数。灰度图一个参数代表一个点,彩图三个数代表一个点,数值的范围均为0~255,数值越大,亮度越高,具体的含义我们在第一章:在Java中安装与配置OpenCV的末尾也有提到。Type可以取到的值列在了下面的表里: