imshow() 函数是 Matplotlib 库中的一个函数,用于显示图像。
imshow() 函数常用于绘制二维的灰度图像或彩色图像。
imshow() 函数可用于绘制矩阵、热力图、地图等。
1.imshow() 方法语法格式如下:
import matplotlib.pyplot as plt
import numpy as np
n = 4
# 创建一个 n x n 的二维numpy数组
a = np.reshape(np.linspace(0,1,n**2), (n,n))
plt.figure(figsize=(12,4.5))
# 第一张图展示灰度的色彩映射方式,并且没有进行颜色的混合
plt.subplot(131)
plt.imshow(a, cmap='gray', interpolation='nearest')
plt.xticks(range(n))
plt.yticks(range(n))
# 灰度映射,无混合
plt.title('Gray color map, no blending', y=1.02, fontsize=12)
# 第二张图展示使用viridis颜色映射的图像,同样没有进行颜色的混合
plt.subplot(132)
plt.imshow(a, cmap='viridis', interpolation='nearest')
plt.yticks([])
plt.xticks(range(n))
# Viridis映射,无混合
plt.title('Viridis color map, no blending', y=1.02, fontsize=12)
# 第三张图展示使用viridis颜色映射的图像,并且使用了双立方插值方法进行颜色混合
plt.subplot(133)
plt.imshow(a, cmap='viridis', interpolation='bicubic')
plt.yticks([])
plt.xticks(range(n))
# Viridis 映射,双立方混合
plt.title('Viridis color map, bicubic blending', y=1.02, fontsize=12)
plt.show()
2.Matplotlib imsave() 方法:
imsave() 方法是 Matplotlib 库中用于将图像数据保存到磁盘上的函数。
通过 imsave() 方法我们可以轻松将生成的图像保存到我们指定的目录中。
imsave() 方法保存图片支持多种图像格式,例如 PNG、JPEG、BMP 等。
imsave() 方法的语法如下:
import matplotlib.pyplot as plt
import numpy as np
# 创建一幅灰度图像
img_gray = np.random.random((100, 100))
# 创建一幅彩色图像
img_color = np.zeros((100, 100, 3))
img_color[:, :, 0] = np.random.random((100, 100))
img_color[:, :, 1] = np.random.random((100, 100))
img_color[:, :, 2] = np.random.random((100, 100))
# 显示灰度图像
plt.imshow(img_gray, cmap='gray')
# 保存灰度图像到磁盘上
plt.imsave('test_gray.png', img_gray, cmap='gray')
# 显示彩色图像
plt.imshow(img_color)
# 保存彩色图像到磁盘上
plt.imsave('test_color.jpg', img_color)
3.Matplotlib imsave() 方法 :
imread() 方法是 Matplotlib 库中的一个函数,用于从图像文件中读取图像数据。
imread() 方法返回一个 numpy.ndarray 对象,其形状是 (nrows, ncols, nchannels),表示读取的图像的行数、列数和通道数:
- 如果图像是灰度图像,则 nchannels 为 1。
- 如果是彩色图像,则 nchannels 为 3 或 4,分别表示红、绿、蓝三个颜色通道和一个 alpha 通道。
import matplotlib.pyplot as plt
# 读取图像文件,下载地址:https://static.jyshare.com/images/mix/tiger.jpeg
img_array = plt.imread('tiger.jpeg')
tiger = img_array/255
#print(tiger)
# 显示图像
red_tiger = tiger.copy()
red_tiger[:, :,[1,2]] = 0
plt.figure(figsize=(10,10))
plt.imshow(red_tiger)
plt.axis('off')
plt.show()
4.Matplotlib 中文显示:
Matplotlib 中文显示不是特别友好,要在 Matplotlib 中显示中文,我们可以通过两个方法:
- 设置 Matplotlib 的字体参数。
- 下载使用支持中文的字体库。
在未设置字体,默认情况显示如下,中文部分不能正常显示:
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
# fname 为 你下载的字体库路径,注意 SourceHanSansSC-Bold.otf 字体的路径
zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf")
x = np.arange(1,11)
y = 2 * x + 5
plt.title("测试", fontproperties=zhfont1)
# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴", fontproperties=zhfont1)
plt.ylabel("y 轴", fontproperties=zhfont1)
plt.plot(x,y)
plt.show()