Python学习:matplotlib.pyplot图像绘制

2021-07-07 19:07:31 浏览数 (1)

本文主要讲述利用matplotlib包进行多图像的绘制。

1.首先看第一个函数matplotlib.pyplot.subplot,这个函数是为了在一张图里放置多个子图。

代码语言:javascript复制
subplot(nrows, ncols, index, **kwargs)
  • 第一个参数为子图行的数目
  • 第二个参数为子图列的数目
  • 第三个参数为某一幅图的编号1,2,3,4,······

例如subplot(2,2,1)为创建一个两行两列的图,其中这幅子图为第一号子图。

2. 显示图片的函数matplotlib.pyplot.subplot()

代码语言:javascript复制
matplotlib.pyplot.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, hold=None, data=None, **kwargs)
  • 要绘制的图像或者数组
  • cmap颜色图谱(colormap),默认None,默认为RGB颜色空间。常用的有gray,jet等

相关参考:matplotlib.pyplot.imshow,

3. matplotlib.pyplot.title() 显示对应子图的名字

4. matplotlib.pyplot.xticks(),matplotlib.pyplot.yticks()

获取或设置x,y轴的当前刻度位置和标签。

5. 举个例子

代码语言:javascript复制
import numpy as np
import cv2
import matplotlib.pyplot as plt

img=cv2.imread('bmx1.jpg',0)#第二个参数 为将图片直接读为灰度图 或者加一步BGR到灰度图的转变,后面的一系列检测是基于灰度图

#cv2.CV_64F 输出图像的深度(数据类型),可以使用 -1, 与原图像保持一致 np.uint8
laplacian=cv2.Laplacian(img,cv2.CV_64F)
# 参数 1,0 为只在 x 方向求一阶导数,最大可以求 2 阶导数。
sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
# 参数 0,1 为只在 y 方向求一阶导数,最大可以求 2 阶导数。
sobely=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)

plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()

运行结果如下:

0 人点赞