灰度直方图通常是用来展示图片中各个像素的分布情况,如果是RGB彩色图片,则需要将每个通道单独显示出来,这里展示灰度图直方图的显示方法,其他方法类推。
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
img_path = "D://001.jpeg"
img_bgr = cv2.imread(img_path) #这里可以直接读取灰度图,为了效果图展示,拆开操作
img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)
cv2.imwrite("D://001_gray.jpeg", img_gray)
histogram, bins, patch = plt.hist(img_gray.flatten(), bins=256, facecolor='pink', histtype='bar')
plt.xlabel("灰度值")
plt.ylabel("像素数量")
plt.title("灰度直方图")
plt.axis([0, 255, 0, np.max(histogram)])
plt.show()
先看下原图以及转换的灰度图模样:
看下灰度图的直方图分布情况:
涉及的函数如下: