因为是新手刚刚接触opencv,所以并没有Mat之前版本的opencv的开发经验,按照资料上的情况来说,opencv最开始是基于C语言的开源视觉库。在之前的版本是用lplImage来作为图像存储,,这个就涉及内存管理
。这是前话,反正我现在也不用了~
- opencv函数中输出图像的内存分配是自动完成的(总之不需要手动分配内存)
- 使用opencv的C++的接口时不需要考虑内存分配的问题
- 3.
Mat数据类型
我是接触java之后来学Mat的,所以一看见这种的定义格式就知道是类(class)/* 类似于String类*/ ,
反正我就当做opencv底层的数据操作的基本数据类型。
Mat 构成:
- 指向图像的信息(矩阵内容)的指针 content
- 信息头(矩阵大小,存储地址,存储方式)feature
Mat的引用的复制问题:
A/*复制的第一种情况*/
Mat A;//
Mat B(A);//
Mat C=A;
B/*复制的第二种情况*/
Mat a;
a.copyTo(Mat b);
Mat c=a.clone();
现在来分析:
A:只复制了信息头的内容
B : 更像克隆clone。全都复制过去。
`