opencv图像处理教程C++(四)Mat的介绍和使用

之前我们已经使用到了Mat,但是还没有对它进行介绍。。。。。
Mat:基本图像容器
在以前的老式opencv中使用的是C结构,很烦人,需要注意内存的申请和销毁,后来转为C++接口,使用Mat对象,自动申请和销毁内存,很方便。
Mat由基本的两部分组成:矩阵头(包含图片信息,例如矩阵大小,存储方法等)和一个指向包含像素点信息的指针。矩阵头部大小是常数,但是矩阵的大小却各不相同。
Mat中重要的几个成员:

 size_t elemSize() const; 
 int type() const;
 int depth() const;
 int channels() const;
 size_t step1(int i=0) const
 int dims
 int rows, cols

channels:我们熟悉的是彩色图像三通道RGB,也就是矩阵中每一个元素值的个数,就像一个彩色像素点它由R、G、B三个混合而成。处于某行某列的像素点有三个值分别为RGB。
depth:深度是用来度量每一个像素的精度,每个像素的位数(bit)也就是深度越深,精度越高。在opencv的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,也就是有无符号。我们可以看作以8U为基本单位
dim:矩阵维度
rows/cols(size):行列数。
type :表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_ + (位数)+(数据类型)+(通道数)。
data: uchar型的指针。Mat类分为了两个部分:矩阵头和指向矩阵数据部分的指针,data就是指向矩阵数据的指针。
Mat对象构造函数:(常用)
Mat();
Mat(int rows, int cols, int type);
Mat(Size size, int

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值