python数据与科学ppt_Python科学计算与数据处理—绘制精美的图表.ppt

绘图函数简介 图像 imread()和imshow()提供了简单的图像载入和显示功能. imread()可以从图像文件读入数据,得到一个表示图像的NumPy数组。它的第一个参数是文件名或文件对象,format参数指定图像类型,如果省略,就由文件的扩展名决定图像类型。 对于灰度图像,它返回一个形状为(M,N)的数组;对于彩色图像,返冋形状为(M,N,C)的数组。 其中,M为图像的高度,N为图像的宽度,C为3或4,表示图像的通道数。 * >>>img = plt.imread(“lena.jpg“) 绘图函数简介 下面的程序从“lena.jpg” 中读入图像数据,得到的数组img是一个形状为(393,512,3)的单字节无符号整数数组。这是因为通常使用的图像都是采用单字节分别保存每个像素的红、绿、蓝三个通道的分量: * >>> img = plt.imread("lena.jpg") >>> img.shape (393L, 512L, 3L) >>> img.dtype dtype('uint8') 绘图函数简介 imshow()可以用来显示imread()返回的数组。如果数组是表示多通道图像的三维数组,那么每个像素的颜色由各个通道的值决定: 请注意,从JPG图像中读入的数据是上下颠倒的,为了正常显示图像,可以将数组的第0轴反转,或者设置imshow()的origin参数为“lower”,从而让所显示图表的原点在左下角: * >>> plt.imshow(img) #注意图像是上下颠倒的 >>> plt.imshow(img[::-1]) #反转图像数组的第0轴 #or >>> plt.imshow(img, origin="lower") # 让图表的原点在左下角 绘图函数简介 如果三维数组的元素类型为浮点数,那么元素的取值范围为0.0到1.0,与颜色值0到255 对应。超出这个范围可能会出现颜色异常的像素。下面的例子将数组img转换为浮点数组并用 imshow()进行显示: * >>> img = img[: :-1] >>> plt.imshow(img*1.0) #取值范围为0.0到255.0的浮点数组,不能正确显示颜色 >>> plt.imshow(img/255.0) #取值范围为0.0到1.0的浮点数组,能正确显示颜色 >>> plt.imshow(np.clip(img/200.0, 0, 1)) # 使用 clip()限制取值范围,整个图像变亮 绘图函数简介 如果imshow()的参数是二维数组,就使用颜色映射表决定每个像素的颜色。下面显示图像中的红色通道: 显示效果比较吓人,因为默认的图像映射将最小值映射为蓝色、将最大值映射为红色. 可以使用colorbar()将颜色映射表在图表中显示出来: * >>> plt.imshow(img[:,:,0]) >>> plt.colorbar() 绘图函数简介 通过imshow()的cmap参数可以修改显示图像时所采用的颜色映射表。颜色映射表是一个 ColorMap对象,matplotlib中已经预先定义好了很多颜色映射表,可通过下面的语句找到这 些颜色映射表的名字:(matplotlib_imshow.py) 下面使用名为copper的颜色映射表显示图像的红色通道,很有老照片的味道: * >>> import matplotlib.cm as cm >>> cm._cmapnames [‘Spectral’,’copper’, ‘RdYlGn', ‘Set2’, ’ sumner’, ’spring’, ’gist_ncar’,…] >>>plt.imshow(img[:,:,0],cmap=cm.copper) 绘图函数简介 * import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm plt.subplots_adjust(0,0,1,1,0.05,0.05) plt.subplot(331) img = plt.imread("lena.jpg") plt.imshow(img) plt.subplot(332) plt.imshow(img[::-1]) plt.subplot(333) plt.imshow(img, origin="lower") img = img[::

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值