今天本小节来学习一下Mat对象,用Opencv的话对Mat对象可谓再熟悉不过了。
首先,其实在Opencv1.0的时候,是没有Mat对象的,当时用的是c语言风格的数据结构lplImage,但是这很容易出现内存泄漏,需要自己去释放内存。从Openc2.0后,开始引入Mat对象,由opencv这个框架自动管理内存,我们只管用就可以了,不需要自己去释放。
接下来我们看看Mat创建的几种方式:
1、使用无参构造方式。
如果我们可以看到先声明了一个Mat对象,然后使用create方法。
我们先来解释一下create的参数:
参数一:5表示行数。
参数二:5表示列数。
参数三:图像矩阵类型。
解释一下CV_8CU3:
8表示八位。
UC:表示uchar类型。
3:表示三个通道。
2、Mat m = Mat(4, 4, CV_8UC3)。解释同上。
3、使用如下方式创建。
此种需要注意的是:Scalar里面的数量一定要和CV_8UC3中的3一致,表示通道数,这个是给图像中每个通道赋值。结果如下:
4、全零矩阵图像。
5、全1矩阵图像。
我这里使用的是单通道也就是CV_8UC1,不是CV_8UC3。
另外,我们还需要学习Opencv的clone()和copyto()的区别。