【基础】pyplot模块

matplotlib.pyplot模块提供了一个类似于MATLAB绘图方式的框架,可以使用其中的函数方便地绘制图形。

1. subplot函数

模块matplotlib.pyplot提供了函数matplotlib.pyplot.subplot()用来向当前窗口内添加一个子窗口对象。该函数的语法格式为:

matplotlib.pyplot.subplot(nrows, ncols, index)

● nrows为行数。

● ncols为列数。

● index为窗口序号。

例如,subplot(2, 3, 4)表示在当前的两行三列的窗口的第4个位置上,添加1个子窗口,如下图所示

image.png

需要注意的是,窗口是按照行方向排序的,而且序号是从“1”开始而不是从“0”开始的。如果所有参数都小于10,可以省略彼此之间的逗号,直接写三个数字。例如,上述subplot(2, 3, 4)可以直接表示为subplot(234)。

程序演示 编写程序演示函数subplot()的使用

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)

equ = cv2.equalizeHist(img)

plt.figure('subplot demo')

plt.subplot(121), plt.hist(img.ravel(), 256)
plt.subplot(122), plt.hist(equ.ravel(), 256)

plt.show()

运行上述程序,会显示如下图所示的图像:image.png

2. imshow函数

模块matplotlib.pyplot提供了函数matplotlib.pyplot.imshow()用来显示图像。其语法格式为:

matplotlib.pyplot.imshow(X, cmap=None)

● X为图像信息,可以是各种形式的数值。

● cmap表示色彩空间。该值是可选项,默认值为null,默认使用RGB(A)色彩空间。

程序演示:使用函数matplotlib.pyplot.imshow()显示彩色图像。

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)

imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.figure('result')

plt.subplot(121), plt.imshow(img), plt.axis('off')
plt.subplot(122), plt.imshow(imgRGB), plt.axis('off')

plt.show()

式中,语句“plt.axis('off')”表示关闭坐标轴的显示。运行上述程序,会显示如下图所示的图像。

image.png

在上图,左图是直接使用默认色彩空间参数模式显示的彩色图像的结果,图像没有正常显示出来。这是因为通过函数cv2.imread()读取的图像,其通道顺序是BGR模式的。而函数matplotlib.pyplot.imshow()的显示顺序是RGB模式的,所以显示出来的图像通道顺序是错乱的,因而无法正常显示。

如果想使用函数matplotlib.pyplot.imshow()正常地显示函数cv2.imread()读取的图像,需要对读取的图像进行通道顺序转换。上图中的右图是使用语句imgRGB=cv2.cvtColor (img,cv2.COLOR_BGR2RGB)将函数cv2.imread()读取到的图像img从BGR转换为RGB模式后,再使用函数matplotlib.pyplot.imshow()的默认色彩空间模式显示的彩色图像,可以看到图像显示正常。