由于彩色图像是由三个颜色组成,因此需要先把彩色图像进行分离成三个颜色平面,才可以按每种颜色去计算直方图,这样就是通过calcHist函数来统计数据出来,再通过matplotlib来显示出来,演示代码如下:
#python 3.7.4,opencv4.1#蔡军生 /caimouse/article/details/51749579#9073204@#import numpy as npimport cv2from matplotlib import pyplot as plt#读取图片img = cv2.imread(szsj.jpg)img1 = cv2.resize(img, (400, 300))cv2.imshow("Original", img1)#chans = cv2.split(img)colors = ("b", "g", "r")plt.figure()plt.title("’Flattened’ Color Histogram")plt.xlabel("Bins")plt.ylabel("# of Pixels")for (chan, color) in zip(chans, colors):hist = cv2.calcHist([chan], [0], None, [256], [0, 256])plt.plot(hist, color = color)plt.xlim([0, 256])plt.show()#cv2.waitKey(0)cv2.destroyAllWindows()
结果输出如