本示例使用的OpenCV版本是:OpenCV 4.1.1
运行Python的编辑器:Jupyter notebook 6.0.0
实现目的
学会使用NumPy的mean
和std
方法,分别得出均值和标准差,对图像矩阵进行操作
实现代码
1,加载需要的库和图像并以RGB模式显示
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('dog.png').astype(np.float32) / 255
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
2,对图像的矩阵减平均值
# 通过img.copy()方法,复制img的数据到mean_img
mean_img = img.copy()
# 使用 .mean() 方法可得出 mean_img 的平均值
print(mean_img.mean())
# mean_img -= mean_img.mean() 等效于 mean_img = mean_img - mean_img.mean()
# 减去平均值,得出零平均值矩阵
mean_img -= mean_img.mean()
# 显示图像
plt.imshow(mean_img)
3,再对图像矩阵除于标准差
std_img = mean_img.copy()
# 输出 std_img 的标准差
print(std_img.std())
# std_img /= std_img.mean() 等效于 std_img = std_img / std_img.mean()
# 除于标准差,得出单位方差矩阵
std_img /= std_img.std()
# 显示图像
plt.imshow(std_img)
程序说明
这些NumPy的数据有计算平均值mean
和标准差std
的方法。
要对矩阵进行标准化,我们需要减去均值得到一个零均值,以通过零均值并除以矩阵的标准差得到一个单位方差矩阵。