imshow函数是Matplotlib中一个常用的一个函数,用于显示图像、绘制二维热力图、灰度图、彩色图等,还可以绘制矩阵、地图等,作用很大
首先,先来一个显示灰度图像的例子
import matplotlib.pyplot as plt
import numpy as np
#创建一个10x10的随机数组
img=np.random.rand(10,10)
plt.title('Dotcpp')
#绘制图像
plt.imshow(img,cmap='gray')
#显示图像
plt.show()代码很简单,首先创建一个20x20大小的随机数组,然后调用imshow函数传入这个数组,第二个参数cmap赋值为'gray'表示灰度图
代码运行效果如下:

第二,如果想显示彩色图,则可以这么写:
import matplotlib.pyplot as plt
import numpy as np
#创建一个10x10x3的随机数组
img=np.random.rand(10,10,3)
plt.title('Dotcpp')
#绘制图像
plt.imshow(img)
#显示图像
plt.show()代码中依旧是创建一个10x10x3的三维矩阵,同时调用imshow函数时不像上一个例子那样设置cmap参数,即默认彩色,这时候运行代码就会如下:

第三,imshow函数还可以显示热力图
import matplotlib.pyplot as plt
import numpy as np
#创建一个10x10随机数组
img=np.random.rand(10,10)
plt.title('Dotcpp')
#绘制图像
plt.imshow(img,cmap='hot')
#显示图像
plt.colorbar()
plt.show()这次我们依旧是二维数组,在imshow函数的第二个参数传入hot参数,即可使用默认的颜色来绘制热力图,同时调用colorbar函数显示了颜色条用于说明不同颜色对应的值,当然我们每次热力值都是随机0~1的,实际大家需要根据传入。效果如下:

第四,imshow函数还可以加载图像,比如显示地图
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
# 图片要放到与代码同级目录,图片地址:https://static.jyshare.com/images/demo/map.jpeg
img = Image.open('map.jpeg')
# 转换为数组
data = np.array(img)
plt.title('Dotcpp')
# 绘制地图
plt.imshow(data)
# 隐藏坐标轴
plt.axis('off')
# 显示图像
plt.show()大家可以先自行阅读代码,我们首先下载一张世界地图,然后注意要放到与源码同级目录下。经过Numpy转为数组,然后调用imshow函数绘制即可,同时由于是地图不需要x和y轴,我们可以选择隐藏,最后效果如下:

更多用法,大家可以看看imshow函数的原型:
imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs)
其中每个参数及作用如下:
| x | 输入数据。可以是二维数组、三维数组、PIL图像对象、matplotlib路径对象等。 |
| cmap | 颜色映射。用于控制图像中不同数值所对应的颜色。可以选择内置的颜色映射,如gray、hot、jet等,也可以自定义颜色映射。 |
| norm | 用于控制数值的归一化方式。可以选择Normalize、LogNorm等归一化方法。 |
| aspect | 控制图像纵横比(aspect ratio)。可以设置为auto或一个数字。 |
| interpolation | 插值方法。用于控制图像的平滑程度和细节程度。可以选择nearest、bilinear、bicubic等插值方法。 |
| alpha | 图像透明度。取值范围为0~1。 |
| origin | 坐标轴原点的位置。可以设置为upper或lower。 |
| extent | 控制显示的数据范围。可以设置为[xmin, xmax, ymin, ymax]。 |
| vmin、vmax | 控制颜色映射的值域范围。 |
| filternorm 和 filterrad | 用于图像滤波的对象。可以设置为None、antigrain、freetype等。 |
| imlim | 用于指定图像显示范围。 |
| resample | 用于指定图像重采样方式。 |
| url | 用于指定图像链接。 |
请大家亲自上机试验
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程