matplotlib教程05---操作图像

欢迎关注公众号【Python开发实战】,免费领取Python学习电子书!

工具-matplotlib

使用matplotlib可以绘制出漂亮的图形。

在matplotlib中读取、生成和打印图像都非常简单。

保存图像

导入matplotlib

import matplotlib
import matplotlib.pyplot as plt

将图形保存到磁盘非常简单,只需要调用savefig()函数,并传递图形保存的名称即可。可用的图形格式取决于使用的图形后端。

plt.plot(x, x**2)
plt.savefig('my_square_function.png', transparent=True)

png

读取图像

只需要导入matplotlib.image模块,并调用imread()函数,并将文件名作为参数进行传递,图像数据会以numpy数组的形式返回。现在读取一下之前保存的平方函数。

import matplotlib.image as mpimg

img = mpimg.imread('my_square_function.png')
print(img.shape, img.dtype)
(288, 432, 4) float32

上面的结果显示加载的图像是一个288×432的,每个像素由一个四元素数组表示:红色、绿色、蓝色和alpha,存储为0到1之间的32位浮点数。现在调用imshow()函数。

plt.imshow(img)
plt.show()

png

显示图像时,隐藏坐标轴显示会更好一些。

plt.imshow(img)
plt.axis('off')
plt.show()

png

生成图像

生成一个图像也很容易。

import numpy as np
img = np.arange(100*100).reshape(100, 100)
print(img)
plt.imshow(img)
plt.show()
[[   0    1    2 ...   97   98   99]
 [ 100  101  102 ...  197  198  199]
 [ 200  201  202 ...  297  298  299]
 ...
 [9700 9701 9702 ... 9797 9798 9799]
 [9800 9801 9802 ... 9897 9898 9899]
 [9900 9901 9902 ... 9997 9998 9999]]

png

由于没有提供RGB级别,imshow()函数会自动将值映射到颜色渐变,默认情况下,颜色渐变从蓝色(低值)变为红色(高值),但可以选择其他颜色。

plt.imshow(img, cmap='hot')
plt.show()

png

也可以直接生成一个RGB图像。

img = np.empty((20, 30, 3))
img[:, :10] = [0, 0, 0.6]
img[:, 10:20] = [1, 1, 1]
img[:, 20:] = [0.6, 0, 0]
plt.imshow(img)
plt.show()

png

由于img数组非常小(20×30),当imshow()函数显示时,会将图像增大到figure的大小。拉伸原始图像,在原始像素之间会留下空白。默认情况下,imshow()函数会使用最近的非空白像素的颜色为每个空白像素着色。这样会产生像素化的图像。还可以使用不同的插值方法,如双线性插值来填补空白像素,但这会导致边缘模糊,可能在某些情况下会更好。

plt.imshow(img, interpolation='bilinear')
plt.show()

png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凯旋.Lau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值