本示例使用的OpenCV版本是:OpenCV 4.1.1
运行Python的编辑器:Jupyter notebook 6.0.0
示例目的
opencv处理矩阵的色彩通道,访问单个通道、交换通道和执行代数操作都在这篇教程中。
实现代码
1,加载所需要的库
import cv2, numpy as np
import matplotlib.pyplot as plt
2,显示加载的图片
# 这里我们把图像的矩阵元素数据类型转换成 float32 并除于255,缩放为0-1的数值
img = cv2.imread('dog.png').astype(np.float32) / 255
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
2,把红色通道和蓝色通道互换
# 交换红色和蓝色通道
img[:, :, [0, 2]] = img[:, :, [2, 0]]
# 显示结果
plt.imshow(img)
在图片RGB模式下交互了蓝色和红色,那么就变成了BGR模式了。
3,把通道交换回来
img[:, :, [0, 2]] = img[:, :, [2, 0]]
4,以不同的方式缩放
# 矩阵中通道索引为0的数值乘于0.9,(即是通道R,红色,红色减少10%)
# 超出的数值在0和1之间进行剪切。
img[:, :, 0] = (img[:, :, 0] * 0.9).clip(0, 1)
# 矩阵中通道索引为1的数值乘于1.1,(即是通道G,绿色,绿色增加10%)
# 超出的数值在0和1之间进行剪切。
img[:, :, 1] = (img[:, :, 1] * 1.1).clip(0, 1)
#显示图像
plt.imshow(img)
最后输出的结果,可以看出图像是偏绿色的,如图:
程序说明
在图像的矩阵中,最后一个维度代表的是通道,本教程,主要是操作该维度。
NumPy为我们提供了非常简单的处理方法。