Opencv学习笔记(五):关于OpenCV2中的Mat图像容器
2013-12-17 21:10
465 查看
关于OpenCV2中的Mat图像容器
Last Edit 2013/12/17
看过OpenCV2写的代码,才知道用OpenCV1写代码是多么麻烦的事~~~
1、为什么要用Mat容器?
还记得在OpenCV1中怎么去申请一个创建一个图像空间么,IPlimage*指针么,程序最后还要记得释放内存空间,一下小心就内在泄漏了。而C++接口中的Mat能够自动申请和释放空间。Mat的不同的对象可以共同使用同一个图像数据,也就是说每个Mat对象的header不同,但它们共对指向同一个data matrix,使用计数机制来管理。
2 、Mat的使用方式
1) Mat A,C;
Mat B(A); C=A,这样当A或者B,C改变时,A,B,C的数据都会同时改变。
为此,当我们不想要这样的结果产生时,我们可以使用拷贝的方法,来使得数据不同时发生改变。
Mat F=A.clone();
Mat G;
A.copyTo(G);
2)还可以用一个矩阵的部分行,列数据去构造一个新的矩阵
Mat D(A,rect(10,10,100,100));
Mat E=A(range:all(),range(1,3));
Mat E=A(range(1,2),range(1,3));
3) Mat的构造函数
Mat M(2,2,CV_8UC3,Scalar(0,0,123)); //生成一个2*2的,3通道的矩阵,值为(0,0,123)
cout<<"M="<<M<<endl; //可以直接使用<<来输出其中的值
![](http://img.blog.csdn.net/20131217204131437)
4) Mat使用create()函数
Mat M;
M.create(4,4,CV_8UC3);
3、Mat构造的几个特殊矩阵
Mat M=Mat::ones(4,4,CV_32F);
![](http://img.blog.csdn.net/20131217205428453)
Mat M=Mat::eye(4,4,CV_32F);
![](http://img.blog.csdn.net/20131217205628890)
Mat M=Mat::zeros(4,4,CV_32F);
![](http://img.blog.csdn.net/20131217205825562)
4、初始化一个矩阵
Mat M=(Mat_<double>(3,3)<<1,2,3,4,5,6,7,8,9)
Mat_是一个矩阵模板。
Last Edit 2013/12/17
看过OpenCV2写的代码,才知道用OpenCV1写代码是多么麻烦的事~~~
1、为什么要用Mat容器?
还记得在OpenCV1中怎么去申请一个创建一个图像空间么,IPlimage*指针么,程序最后还要记得释放内存空间,一下小心就内在泄漏了。而C++接口中的Mat能够自动申请和释放空间。Mat的不同的对象可以共同使用同一个图像数据,也就是说每个Mat对象的header不同,但它们共对指向同一个data matrix,使用计数机制来管理。
2 、Mat的使用方式
1) Mat A,C;
Mat B(A); C=A,这样当A或者B,C改变时,A,B,C的数据都会同时改变。
为此,当我们不想要这样的结果产生时,我们可以使用拷贝的方法,来使得数据不同时发生改变。
Mat F=A.clone();
Mat G;
A.copyTo(G);
2)还可以用一个矩阵的部分行,列数据去构造一个新的矩阵
Mat D(A,rect(10,10,100,100));
Mat E=A(range:all(),range(1,3));
Mat E=A(range(1,2),range(1,3));
3) Mat的构造函数
Mat M(2,2,CV_8UC3,Scalar(0,0,123)); //生成一个2*2的,3通道的矩阵,值为(0,0,123)
cout<<"M="<<M<<endl; //可以直接使用<<来输出其中的值
4) Mat使用create()函数
Mat M;
M.create(4,4,CV_8UC3);
3、Mat构造的几个特殊矩阵
Mat M=Mat::ones(4,4,CV_32F);
Mat M=Mat::eye(4,4,CV_32F);
Mat M=Mat::zeros(4,4,CV_32F);
4、初始化一个矩阵
Mat M=(Mat_<double>(3,3)<<1,2,3,4,5,6,7,8,9)
Mat_是一个矩阵模板。
相关文章推荐
- OpenCV学习笔记——Mat,图像的新容器
- OpenCV学习笔记(三)——Mat,图像的新容器
- opencv2学习笔记(一)-Mat - 基本图像容器
- OpenCV学习笔记(二)——Mat,图像的新容器
- OpenCV学习笔记(三)——Mat,图像的新容器
- OpenCV学习笔记(三)——Mat,图像的新容器
- OpenCv学习笔记(四)--Mat基本图像容器Mat对象信息头,矩阵体的创建,深复制,浅复制详解
- 基础学习笔记之opencv(8):Mat - 基本图像容器
- OpenCV学习笔记(三)——Mat,图像的新容器
- opencv学习笔记之Mat,图像的新容器
- OpenCV2学习笔记一:基本图像容器Mat
- opencv 2.x学习笔记(五)关于Mat
- OpenCv2 学习笔记(2) Mat图像显示
- 学习OpenCV范例(一)——Mat - 基本图像容器
- opencv3编程入门学习笔记1-----基本图像容器Mat
- opencv学习记录(3)Mat - 基本图像容器
- Opencv学习笔记(1)_MAT图像与HBITMAP互相转换
- OpenCv学习笔记(二)--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解
- [学习OpenCV攻略][013][Mat - 基本图像容器]
- 基础学习笔记之opencv(9):Mat图像扫描