opencv学习-Mat对象
Posted 殇堼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv学习-Mat对象相关的知识,希望对你有一定的参考价值。
Mat的由来-图像的数据结构
Mat是opencv2之后引进opencv中的,能自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构,分为两个部分,分别是头部和数据部分。
iplimage是早期的图像数据结构,opencv自发布以来就一直存在的,是C语言风格的数据类型,需要开发者自己分配和管理内存,对大的程序使用它容易导致内存泄漏的问题。
Mat对象使用的四个要点
1.输出对象内存是自动分配的;
2.使用opencv的C++接口不需要考虑内存分配问题;
2.赋值和拷贝构造函数只会复制头部;
3.使用clone与copyto两个函数实现数据的完全复制。
两种完全复制Mat对象的方法
分别完全复制src、dst给对象m1和m2
Mat m1,m2;
m1 = src.clone();
dst.copyTo = m2;
以上就是两种完全复制mat对象的方法。
定义一个小的数组(非常重要)
Mat_<double/char>表示既可以使用duble类型,也可以使用char类型。
Mat m3= (Mat_<double/char>(3,3)<<1,0,0,0,1,0,0,0,1);
cout << "m3" << endl << m3 << endl;
创建一个全黑的图像,其尺寸和类型跟src一样
注意:size()和type()都是函数,这里调用两个函数,所以要加上小括号。
Mat m1=Mat::zeros(src.size(),src.type());
以上是关于opencv学习-Mat对象的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV源代码赏析: Mat对象step属性含义及使用深入分析