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'表示灰度图

代码运行效果如下:

imshow显示灰度图


第二,如果想显示彩色图,则可以这么写:

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显示彩色图像


第三,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函数显示热力图


第四,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函数的原型:

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用于指定图像链接。

请大家亲自上机试验

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)