ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第三课 Mat对象

2021-09-12 21:58:52  阅读:140  来源: 互联网

标签:const Mat 对象 int 复制 第三课 type


第三课 Mat对象
Mat对象与IplImage对象
·Mat对象Opencv2.0之后引进的图像数据结构、自动分配内存,不存在内存泄露的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。
·IplImage是从2001年Opencv发布后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用他容易导致内存泄露问题

Mat对象构造函数与常用方法
Mat()
Mat(int rows, int cols, int type)
Mat(Size size, int type)
Mat(int rows, int cols, int type, const Scalar &s)
Mat(Size size, int type, const Scalar &s)
Mat(int ndims, const int *sizes, int type)
Mat(int ndims, const sizes, int type, const Scalar &s)
常用方法:
void copyTo(Mat mat)
void convertTo(Mat dst, int type)
Mat clone()
int channels()
int depth()
bool empty()
uchar
ptr(i=0)

Mat对象使用
·部分复制:一般情况下只会复制Mat对象的头和指针部分,不会复制数据部分。
Mat A=imread(imgFilePath);
Mat B(A)//只复制
·完全复制:若果想把Mat对象的头部和数据部分一起复制,可以通过如下两个API实现
Mat F=A.clone();或Mat G;A.copyTo(G);

Mat对象使用-四个要点
·输出图像的内存是自动分配的
·使用Opencv的C++接口,不需要考虑内存分配的问题
·赋值操作和拷贝构造函数只会复制头部分
·使用clone与copyTo两个函数实现数据完全复制

Mat对象创建
·cv::Mat::Mat构造函数
Mat M(2,2,CV_8UC3,Scalar(0,0,255)),其中前两个参数分别表示行row跟列column、第三个CV_8UC3中的8表示每个通道占8位,U表示无符号,C表示Char类型、3表示通道数目是3、第四个参数是向量表示初始化每个像素值是多少,向量疮毒对应通道数目一致。
·创建多维数组cv::Mat::create
int sz[3]={2,2,2};
Mat L(3,sz,CV_8UC1,Scalar::all(0)); //了解就好了

//提高对比度
Mat C=(Mat_(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
cout <<“C=”<<endl<<" "<<C<<endl<<endl;

标签:const,Mat,对象,int,复制,第三课,type
来源: https://blog.csdn.net/omtnemal/article/details/120256815

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有