opencv学习笔记——Mat属性与成员函数总结
2018-02-08 22:23
281 查看
自己最近在看《opencv2 计算机视觉编程手册》学习了不少相关知识,这篇博文主要总结了己在学习过程中所遇到的Mat类的相关属性和成员函数,因为在学习过程中发觉关于Mat类属性与成员函数内容挺多而且特别容易混淆,所以把这些内容总结在这篇博文上。
cols , rows (属性)
顾名思义 rows 返回图像矩阵的行数,cols返回列数。
step (属性)
step以字节为单位的图像宽度。elemSize() (函数)
返回每一个像素点的字节数,比如三通道的short(两字节)型的矩阵(CV_16C3) elemSize()将返回 6 。会发现 step = elemSize() * cols
total() (函数)
返回总的像素点数,也就是 cols*rows
depth() (函数)
depth函数返回每个像素点的数据类型。Mat.depth()得到的是一个0~6的数字,分别代表不同的数据类型,对应关系如下:
返回值在 Mat.depth()的值上加上某个数值,单通道叫0 双通道加8 三通道加16
clone()
拷贝一幅图像,这里的拷贝不是指只拷贝头信息然后依然共享矩阵数据,而是深拷贝。
create() (函数)
说到clone() 就不得不提create() 函数,两者都可以深度拷贝一幅图像但略有差别。
对于一个已经存在的Mat矩阵我们想根据新的尺寸和数据类型对这个矩阵进行重新分配,那么我们就可以调用create成员函数。而且,如果新指定的尺寸和数据类型与原有一样,create函数会直接返回,并不会对本实例做任何更改。result.create(image.rows,image.cols,image.type());
result.create(image.size(),image.type());data (属性)
图像数据是以unsigned char 形式保存在一块内存中。这块内存的首地址可以通过data成员变量获得。uchar* data = image.data;从当前行到下一行可以通过对指针加上行宽完成
cols , rows (属性)
顾名思义 rows 返回图像矩阵的行数,cols返回列数。
step (属性)
step以字节为单位的图像宽度。elemSize() (函数)
返回每一个像素点的字节数,比如三通道的short(两字节)型的矩阵(CV_16C3) elemSize()将返回 6 。会发现 step = elemSize() * cols
total() (函数)
返回总的像素点数,也就是 cols*rows
depth() (函数)
depth函数返回每个像素点的数据类型。Mat.depth()得到的是一个0~6的数字,分别代表不同的数据类型,对应关系如下:
enum{CV_8U=0,CV_8S=1,CV_16U=2,CV_16S=3,CV_32S=4,CV_32F=5,CV_64F=6}其中U是unsigned的意思,S表示signed,也就是有符号和无符号数。值得注意的是对于彩色图像每一个实际像素点是由BGR(实际在内存里的位置blue在前面,green在中间,red在后面)三个亚像素点构成,这里的depth() 返回的是每个亚像素点的数据类型。Mat.type() (函数)
返回值在 Mat.depth()的值上加上某个数值,单通道叫0 双通道加8 三通道加16
clone()
拷贝一幅图像,这里的拷贝不是指只拷贝头信息然后依然共享矩阵数据,而是深拷贝。
create() (函数)
说到clone() 就不得不提create() 函数,两者都可以深度拷贝一幅图像但略有差别。
对于一个已经存在的Mat矩阵我们想根据新的尺寸和数据类型对这个矩阵进行重新分配,那么我们就可以调用create成员函数。而且,如果新指定的尺寸和数据类型与原有一样,create函数会直接返回,并不会对本实例做任何更改。result.create(image.rows,image.cols,image.type());
result.create(image.size(),image.type());data (属性)
图像数据是以unsigned char 形式保存在一块内存中。这块内存的首地址可以通过data成员变量获得。uchar* data = image.data;从当前行到下一行可以通过对指针加上行宽完成
data += image.step; //下一行也可以通过如下方式获得第 j 行、i 列的像素地址:data = image.data + j*image.stap + i*image.elemSize();
相关文章推荐
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- opencv学习:mat的属性笔记
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- OpenCV学习笔记(三十七)——实用函数、系统函数、宏core
- 成员函数声明为常量的解释--C++学习笔记
- OpenCV2.3.1学习笔记(1):用vec类型变量构造Mat
- OpenCV学习笔记(3):一些函数等的解释(更新中...)
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
- openCv学习笔记(二)—cv::Mat学习
- JavaScript学习笔记(十一) 函数name属性和函数的提升
- opencv深入学习(1)--Mat主要成员变量
- python学习笔记17-常用函数总结整理
- Effective C++学习笔记:分清成员函数,非成员函数和友元函数
- javascript学习笔记—DOM常用API、属性、方法、函数
- 【菜鸟C++学习笔记】11.内联函数与const成员函数
- OpenCV学习笔记(12)OpenCV调用Matlab函数进行保存视频的尝试
- C#2005 .NET3.0高级编程学习笔记————类的函数成员(构造函数,只读字段)
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
- 基础学习笔记之opencv(8):Mat - 基本图像容器
- C++学习——const成员函数总结