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对象与它各种用法

opencv中Mat对象浅拷贝

OpenCV_Mat类对象常用的构造方法及初始化方法

OpenCV源代码赏析: Mat对象step属性含义及使用深入分析

OpenCV源代码赏析: Mat对象step属性含义及使用深入分析

OpenCV Mat 对象 - 获取数据长度