import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
def plot_demo(image):#灰度直方图
plt.hist(x=image.ravel(),bins=256,range=[0,256])
plt.show("直方图")
# hist =》ravel() 英语 (散开,解开)将多维数组降位一维
# hist =》ravel()返回的是视图,修改时会影响原始矩阵
# hist x数据,数值类型;bins条形数,int; rangex轴的范围,数值元组(起,终);
# bins条形数,因为亮度的范围是0到255,统计每个颜色有多少个
#下面是图像的直方图
def image_hist(image):
color=('blue','green','red')
#遍历下标及基集合
for i,color in enumerate(color):
hist=cv.calcHist([image],[i],None,[256],[0,256])
plt.plot(hist,color=color)#颜色等于我们的color
plt.xlim([0,256])#设置参数范围
plt.show()
# i代表哪个通道,共有3个通道
# None是指定mask,这里没有,所以为NONE
#256=>bins RGB色彩空间范围是0到255
#,[0,256]=>range
src=cv.imread("D:/2018-07-31 101509.jpg")
#cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("source image",src)
#plot_demo(src)
image_hist(src)
cv.waitKey(0)
cv.destroyAllWindows()
效果图如下: