用matplotlib根据一维数组画直方图

画灰度直方图

import numpy as np
import matplotlib.pyplot as plt
img=np.array(array)    #array是自己的一维数组,用np.array()将此数组变为numpy下的数组

plt.figure("lena")           #定义了画板
arr=img.flatten()          #若上面的array不是一维数组,flatten()将其变为一维数组,是numpy中的函数
#hist函数可以直接绘制直方图
#参数有四个,第一个必选
#arr: 需要计算直方图的一维数组
#bins: 直方图的柱数,可选项,默认为10
#normed: 是否将得到的直方图向量归一化。默认为0
#facecolor: 直方图颜色
#alpha: 透明度
#返回值为n: 直方图向量,是否归一化由参数设定;bins: 返回各个bin的区间范围;patches: 返回每个bin里面包含的数据,是一个list
n, bins, patches = plt.hist(arr, bins=256, normed=1, facecolor='green', alpha=0.75)  
plt.show()

用matplotlib根据一维数组画直方图_第1张图片

画彩色直方图

与画灰度类似,只是将三通道的直方图画出来,再叠加起来

src = Image.open("./testImg/1.jpg")
r,g,b=src.split()
plt.figure("lena")
ar=np.array(r).flatten()
plt.hist(ar, bins=256, normed=1,facecolor='r',edgecolor='r',hold=1)
ag=np.array(g).flatten()
plt.hist(ag, bins=256, normed=1, facecolor='g',edgecolor='g',hold=1)
ab=np.array(b).flatten()
plt.hist(ab, bins=256, normed=1, facecolor='b',edgecolor='b')
plt.show()	

你可能感兴趣的:(matplotlib)