《OpenCV轻松入门》学习笔记第一天

Python3+OpenCV学习

  • 第一章 OpenCV入门
  • 第二章 图像处理基础
  • 第三章 图像的运算

第一章 OpenCV入门

1.读取图像cv2.imread(filename, flags)
flags的值:
cv2.IMREAD_UNCHANGED -1
cv2.IMREAD_GRAYSCALE 0
cv2.IMREAD_COLOR 1
cv2.IMREAD_ANYDEPTH 2
cv2.ANYCOLOR 4
2.显示图像cv2.imshow(winname, mat)
3.cv2.waitkey(delay)函数
delay表示等待键盘触发的时间,单位是ms,当该值为负数或0时,表示无限等待
4.destroyWindow(winname)函数
5.destroyAllWindows()函数
6.保存图像cv2.imwrite(filename, img)

第二章 图像处理基础

1.二值图像(仅包含黑色和白色)
因图像比较简单,只有两种颜色,所以一个bit位0/1就可以表示
2.灰度图像
二值图像表示起来方便,但是由于只有两种颜色,所表示的图像不够细腻,而灰度图像采用更多数值来体现不同的颜色。
通常,计算机把灰度处理为256个灰度级,[0, 255],其中,0表示纯黑,255表示纯白
正好用一个字节就可以表示(8位)
3.彩色图像
仅介绍常见的RGB色彩空间,其中存在R(red), G(Green), B(Blue)三个通道。每个值都在[0, 255]以内,用这三个色彩通道的组合表示颜色,故需要三个字节来表示。
4.Numpy库
numpy库中zeros()和ones()函数均可以生成一个数组
5.感兴趣区域ROI
Img[200:400, 200:400]
6.通道操作
1)通过索引拆分
B = img[: ,:, 0]
G = img[:, :, 1]
R = img[:, :, 2]
2)通过函数拆分
B, G, R = cv2.split(img)
3)通道合并
Img = cv2.merge([B , G ,R])
7.获取图像属性
·shape:如果是彩色图像,返回行数,列数,通道数,而如果是二值图像或灰度图像,则返回行数和列数。
·size:返回图像的像素数目
·dtype:返回图像的数据类型

第三章 图像的运算

1.图像加法运算
1)加号运算符
a + b = a + b (a + b < 256)
a + b = mod(a + b, 256) (a + b >= 256)
2)cv2.add(像素值a, 像素值b)函数
a + b = a + b (a + b < 256)
a + b = 255 (a + b >= 256)
2.图像加权和cv2.addWeight(src1, alpha, src2, belta, gamma)
必须保证src1和src2大小,类型相同,gamma可以为0但不能省略
3.按位逻辑运算
1)按位与运算cv2.bitwise_and(src1, src2)
2)按位或运算cv2.bitwise_or(src1, src2)
3)按位非运算cv2.bitwise_not(src)
4)按位异或运算cv2.bitwise_xor(src1, src2)
4.掩模
很多函数都会指定一个掩模,也被称之为掩码
计算结果 = cv2.add(参数1, 参数2, 掩模)
当使用掩模参数时,操作只会在掩模值为非空的像素点执行,并将其他像素点的值置零
5.图像与数值的运算
在上述加法运算和按位运算中,参与运算的两个算子可以是两幅图像,也可以是一幅图像与一个数值
6.位平面分解
将灰度图像中处于同一比特位上的二进制像素值进行组合,得到一幅二进制值的图像,该图像被成为灰度图像的一个位平面,这个过程被称为位平面分解。

在8位灰度图中,每一个像素使用8位二进制值来表示,故通过提取灰度图像像素点二进制像素值的每一比特位的组合,可以得到八个位平面图像。
·a7的权重最高,所构成的位平面与原图像相关性最高,该位平面看起来通常与原图像最类似
·a0权重最低,所构成的位平面与原图像相关性最低,该平面通常看起来是杂乱无章的。
针对RGB图像,如果将R通道、G通道、B通道中的每一个通道对应的位平面进行合并,即可组成新的RGB彩色图像。通过上述方式,可以完成彩色图像的位平面分解。
7.图像加密和解密
过按位异或可以实现图像的加密和解密:原始图像与密钥图像异或可以得到加密后的图像,将加密后的图像与密钥图像异或可以得到原始图像
8.数字水印
最低有效位

若有侵权,请联系删除

本读书笔记来源于教材。1


  1. 李立宗. OpenCV轻松入门: 面向python[M].北京. 电子工业出版社: 李立宗. 2019.5 ↩︎

你可能感兴趣的:(OpenCV学习)