# -*- coding:utf-8 -*- import cv2 import cv2 as cv import numpy as np from matplotlib import pyplot as plt import sys plt.rcParams['font.sans-serif'] = ['SimHei'] # 可以plt绘图过程中中文无法显示的问题 def zhi(path): # 读取图像 image = cv.imread(path) # 判断图片是否读取成功 if image is None: print('Failed to read apple.jpg.') sys.exit() # 将图像转为灰度图像 gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 对图像进行直方图计算 hist_item = cv.calcHist([gray_image], [0], None, [256], [0, 256]) # 对直方图进行绝对值求和归一化 image_L1 = cv.normalize(hist_item, None, 1, 0, cv.NORM_L1) # 对直方图进行最大值归一化 image_Inf = cv.normalize(hist_item, None, 1, 0, cv.NORM_INF) # 展示结果 return image_L1,image_Inf if __name__ == '__main__': x = np.linspace(0, 255, 256, axis=-1) x = x.reshape(256, 1) path1='F:\yufanhuaziliao\daima\erzi\imag\IMAG\\1_1.png' image_L1, image_Inf=zhi(path1) # plt.plot(image_L1, label='对直方图进行绝对值求和归一化',color='green') # # plt.show() plt.plot(image_Inf, label='亮度1',color='blue') plt.fill(x, image_Inf, color='blue', alpha=0.5) path1 = 'F:\yufanhuaziliao\daima\erzi\imag\IMAG\\1_2.png' image_L11, image_Inf1 = zhi(path1) # plt.plot(image_L1, label='对直方图进行绝对值求和归一化',color='green') # # plt.show() plt.plot(image_Inf1, label='亮度2', color='green') plt.fill(x, image_Inf1, color='green', alpha=0.5) path1 = 'F:\yufanhuaziliao\daima\erzi\imag\IMAG\\1_3.png' image_L11, image_Inf1 = zhi(path1) # plt.plot(image_L1, label='对直方图进行绝对值求和归一化',color='green') # # plt.show() plt.plot(image_Inf1, label='亮度3', color='orange') plt.fill(x, image_Inf1, color='orange', alpha=0.5) path1 = 'F:\yufanhuaziliao\daima\erzi\imag\IMAG\\1_4.png' image_L11, image_Inf1 = zhi(path1) # plt.plot(image_L1, label='对直方图进行绝对值求和归一化',color='green') # # plt.show() plt.plot(image_Inf1, label='亮度4', color='Cyan') plt.fill(x, image_Inf1, color='Cyan', alpha=0.5) path1 = 'F:\yufanhuaziliao\daima\erzi\imag\IMAG\\1_5.png' image_L11, image_Inf1 = zhi(path1) # plt.plot(image_L1, label='对直方图进行绝对值求和归一化',color='green') # # plt.show() plt.plot(image_Inf1, label='亮度5', color='red') plt.fill(x, image_Inf1, color='red', alpha=0.4) plt.legend() plt.show() cv2.waitKey(0) cv2.destroyAllWindows()