第五章 深度学习
四、OpenCV
1. OpenCV安装
执行以下命令安装opencv-python库(核心库)和opencv-contrib-python库(贡献库)。注意:命令拷贝后要合成一行执行,中间不要换行。
# 安装opencv核心库
pip3 install --user opencv-python==4.3.0.38 --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host https://pypi.tuna.tsinghua.edu.cn
# 安装opencv贡献库
pip3 install --user opencv-contrib-python==4.3.0.38 --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host https://pypi.tuna.tsinghua.edu.cn
2. OpenCV基本操作
读取、图像、保存图像
# 读取图像
import cv2
im = cv2.imread("../data/Linus.png", 1) # 1表示3通道彩色,0表示单通道灰度
cv2.imshow("test", im) # 在test窗口中显示图像
print(type(im)) # 打印数据类型
print(im.shape) # 打印图像尺寸
cv2.imwrite("../data/Linus_2.png", im) # 将图像保存到指定路径
cv2.waitKey() # 等待用户按键反馈
cv2.destroyAllWindows() # 销毁所有创建的窗口
"""
<class 'numpy.ndarray'>
(216, 160, 3)
"""
执行结果:
3. 图像色彩操作
3.1 彩色图像转换为灰度图像
# 彩色图像转换为灰度图像示例
import cv2
im = cv2.imread("../data/Linus.png", 1)
cv2.imshow("RGB", im) # 在test窗口中显示图像
# 使用cvtColor进行颜色空间变化,COLOR_BGR2GRAY表示BGR to GRAY
img_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) # 彩色图像灰度化
cv2.imshow("Gray", img_gray)
cv2.waitKey() # 等待用户按键反馈
cv2.destroyAllWindows() # 销毁所有创建的窗口
执行结果:
3.2 色彩通道操作
# 色彩通道操作:通道表示为BGR
import numpy as np
import cv2
im = cv2.imread("../data/opencv2.png")
print(im.shape)
cv2.imshow("im", im)
# 取出蓝色通道,当做单通道图像显示
b = im[:, :, 0]
cv2.imshow("b", b)
# 去掉蓝色通道(索引为0的通道)
im[:, :, 0] = 0
cv2.imshow("im-b0", im)
# 去掉绿色通道(索引为1的通道)
im[:, :, 1] = 0
cv2.imshow("im-b0g0", im)
cv2.waitKey()
cv2.destroyAllWindows()
执行结果:
3.3 灰度直方图均衡化
# 直方图均衡化示例
import numpy as np
import cv2
from matplotlib import pyplot as plt
im = cv2.imread("../data/sunrise.jpg", 0)
cv2.imshow("orig", im)
# 直方图均衡化
im_equ = cv2.equalizeHist(im)
cv2.imshow("equ1", im_equ)
# 绘制灰度直方图
## 原始直方图
print(im.ravel())
plt.subplot(2, 1, 1)
plt.hist(im.ravel(), #ravel返回一个连续的扁平数组
256, [0, 256], label="orig")
plt.legend()
## 均衡化处理后的直方图
plt.subplot(2, 1, 2)
plt.hist(im_equ.ravel(), 256, [0, 256], label="equalize")
plt.legend()
plt.show()
cv2.waitKey()
cv2.destroyAllWindows()
执行结果:
3.4 彩色亮度直方图均衡化
# 彩色图像亮度直方图均衡化
import cv2
# 读取原始图片
original