lesson3: 图像对象的创建与赋值
1. 课程目标
掌握OpenCV中Mat
对象的创建、拷贝克隆与赋值。
2. 图像对象的创建与赋值
2.1 Mat的基本结构
Mat对象的基本结构如图1所示,每一个Mat对象由两部分组成:头部
,数据部分
;头部存储对象的一些基本信息,如图像的基本类型HSV、RGB、GRAY等以及数据的类型,unchar、float、double等。
2.2 Mat对象的克隆与拷贝
代码如下:
1 | Mat m1, m2; |
2.3 直接创建Mat对象
可以直接使用zeros
和ones
两个函数分别创建不同尺寸大小、数据类型和通道的图像。
代码如下:
1 | //创建空白对象 |
结果图如下所示:
2.4 Mat对象的赋值
对一个通道赋值:
1 | m3 = 127; |
结果如下:
对每个通道分别赋值:
1 | m4 = Scalar(127,0,255); |
结果如下:
在对Mat对象进行赋值时,应使用clone
或者copyTo
而不能直接使用赋值=
,这样做前一个对象和后一个对象共用一个存储地址,一个改变另一个也会改变。
实验如下:
使用
=
赋值1
2
3
4
5
6
7//直接赋值
m3 = Scalar(255,0,0);
imshow("m3_0",m3);
m4 = m3;
m4 = Scalar(0, 255, 0);
imshow("m3_1", m3);
imshow("m4", m4);使用
clone
赋值
1 | m3 = Scalar(255, 0, 0); |
- 使用
copyTo
赋值
1 | m3 = Scalar(255, 0, 0); |