03 图像对象的创建与赋值
opencv知识点:
- Mat类
- 图像复制的3种方法
- 图像属性的获取
- Mat对象的创建
- Mat对象的赋值
本课所解决的问题:
- Mat是什么?
- Mat对象克隆/拷贝与赋值的区别?
- 如何获取图像的属性?
- 如何创建空白图像?
- 如何对Mat对象赋值?
1.Mat类及其实例
Mat简述
什么是Mat呢,Mat其实就是matrix(矩阵)的缩写
我们看到的图像,就是以数字矩阵的形式存储在计算机中,在opencv中,我们用Mat类的对象
存储图像。
在opencv中,Mat类分为两个部分
- 矩阵头
- 矩阵数据
矩阵头
图像有很多属性。如:大小,**宽和高**,数据类型,**通道数**。这些数据存储在**矩阵头**中
矩阵数据
图像也有很多的数据,图像的数据部分是所有像素的值的一个集合,存储在**矩阵数据**中
Mat对象复制
看上图,我们发现Mat对象复制是有三种方法的
- 克隆
- 拷贝
- 赋值
这里说一下它们的区别
==赋值:==相当于浅复制,只复制了矩阵头,指向的是同一个数据块。
克隆/拷贝:相当于深复制,还会复制相应的数据块
//1.赋值——浅复制
Mat src = imread("……");
Mat m3 = src;
//2.克隆——深复制
Mat src = imread("……");
Mat m1 = src.clone();
//3.拷贝——深复制
Mat src = imread("……");
Mat m2;
src.copyTo(m2);
Mat对象属性
Mat对象存储了一些属性,如:列数,行数,通道数(维度),位深度,图像类型
怎么获取它们呢?
Mat image= imread("……");
//很简单,通过这些操作即可
image.cols;
image.rows;
image