使用Matplotlib绘制图像
魔法命令
在notebook中,无法进行弹窗显示matplotlib控件,但是notebook已经集成了matplotlib,可以使用魔法命令来显示matplotlib的图表:
%matplotlib inline
这样就可以以内联的形式,将图表显示在cell下的output区域。
在notebook中使用matplotlib的缺点就是无法使用交互模式对绘制的图像进行实时修改。
matplotlib.image
本篇使用的图片:
- 导入所需的包:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
- 读取图片:
img = mpimg.imread('matplotlib.jpg')
print(img.shape)
print(img)
可见输出的数据都是在[0, 1]之间的值。是因为matplotlib会将每个通道的8位数据重新缩放为0.0到1.0之间的浮点数据。
- 绘制图片:
plt.imshow(img)
# 也可以获取该绘图对象
# imgplot = plt.imshow(img)
4. 统计直方图
img_slice = img[:,:,0]
img_slice.shape
img_slice.ravel().shape
(200, 200)
(40000,)
这里只统计一个通道的直方图
plt.hist(img_slice.ravel(), bins=5, range=(0.0, 1.0), fc='b', ec='r')
ravel():将array展平成一维,同numpy.ravel()
bins:将数据划分多少分块
range:统计什么范围的数据
fc:直方图的颜色
ec:直方图边沿的颜色
img_slice = img[:,:,0]
plt.hist(img_slice.ravel(), bins=[0.1,0.2,0.3,0.4,0.5], fc='b', ec='r')
bins也可以是个序列,范围为bins的左右值