直方图显示了不同数值的像素出现的次数。在 Matplotlib 中有 hist() 函数提供了绘制直方图的接口。
我们使用 Matplotlib 来绘制 paojie.jpg 的直方图吧!
代码:
import cv2
import numpy as np
import matplotlib.pyplot as plt
# Gray scale
def BGR2GRAY(img):
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# Gray scale
out = 0.2126 * r + 0.7152 * g + 0.0722 * b
out = out.astype(np.uint8)
return out
# Read image
img = cv2.imread("../paojie.jpg").astype(np.float)
# BGR2GRAY
img = BGR2GRAY(img)
# Display histogram
# numpy中的ravel() 将多维数组转换为一维数组,不会产生副本
plt.hist(img.ravel(), bins=255, rwidth=0.8, range=(0, 255))
plt.xlabel('Gray value')
plt.ylabel('number')
plt.title(r'Histogram of paojie.jpg')
plt.savefig("out.jpg")
plt.show()
实验结果:
BGR图像转换为灰度图像后 ↑
实验输出结果 ↑
参考内容: