【Python】Matplotlib-多张图像的显示

一,情景描述

大家在写论文或者实验报告的时候,经常会放多张图片或数据图像在一起形成对比。比如,我现在有一张经过椒盐噪声处理的图像,现在进行三种滤波,分别是均值,高斯,中值滤波,共计四张图像,怎么才能将他们利用matplotlib库放置到一起呢?跟着我一起来写代码吧!

二,实现原理

1.读取图像

用cv2.imread()函数读取原始图像,图像文件放置在了项目文件夹下,图像需要时opencv支持的图像格式(如jpg,png等等)具体见链接:《OpenCV支持的图片格式》_opencv保存windows可以打开的类型-CSDN博客

python 复制代码
# encoding:utf-8
import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

img_1 = cv2.imread('sp_noise.jpg')
img_2 = cv2.imread('medianBlur.jpg')
img_3 = cv2.imread('mean.jpg')
img_4 = cv2.imread('Gaussian.jpg')

2.将BGR转化为RGB

将图像色彩显示转化为RGB通道,否则后续利用matplotlib显示图像的时候会发生色彩通道不兼容导致色彩出现偏差。具体原因见我写的博客:【Bug】当用opencv库的imread()函数读取图像,用matplotlib库的plt.imshow()函数显示图像时,图像色彩出现偏差问题的解决方法-CSDN博客

python 复制代码
# 将BGR图像转换为RGB
img_1 = cv2.cvtColor(img_1, cv2.COLOR_BGR2RGB)
img_2 = cv2.cvtColor(img_2, cv2.COLOR_BGR2RGB)
img_3 = cv2.cvtColor(img_3, cv2.COLOR_BGR2RGB)
img_4 = cv2.cvtColor(img_4, cv2.COLOR_BGR2RGB)

3.显示图像

python 复制代码
# 显示图形
titles = ['噪声图像', '中值滤波', '均值滤波 ', '高斯滤波'] # 设置每个图像的标题
images = [img_1, img_2, img_3, img_4] #将图像存储到images列表里面

将每个图像标题和图像分别储存到titles和images列表里,方便后续取用,图像标题与图像一一对应,有多少图像存入列表多少。

python 复制代码
for i in range(4):
    plt.subplot(2, 2, i + 1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks(), plt.yticks()
plt.show()

for i in range(4):启动一个循环,循环四次,有多少个图像循环多少次,每次循环代表对一个图像的处理。

plt.subplot(2, 2, i + 1) :在Matplotlib中创建一个2x2的子图网格i 的值在每次循环中分别为0,1,2,3,则i + 1 表示子图的位置,即1,2,3,4,下图是2x2的子图网格。

如果是**plt.subplot(1, 4, i + 1),则创建是1**x4的子图网格,即一行四列。如图:

plt.imshow(images[i])然后使用 plt.imshow 显示列表中的图像,当第一次循环时,i=0,即取出images[0],即第一张图,放到i+1=1的位置。

plt.title(titles[i]) 设置当前子图的标题,根据 titles 中的标题列表选择相应的标题。

**plt.xticks([]), plt.yticks([]):**隐藏坐标轴,这将使图像更干净,不显示坐标刻,如果去掉参数[],即显示坐标轴:

三,完整代码

python 复制代码
# encoding:utf-8
import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

img_1 = cv2.imread('sp_noise.jpg')
img_2 = cv2.imread('medianBlur.jpg')
img_3 = cv2.imread('mean.jpg')
img_4 = cv2.imread('Gaussian.jpg')
# 将BGR图像转换为RGB
img_1 = cv2.cvtColor(img_1, cv2.COLOR_BGR2RGB)
img_2 = cv2.cvtColor(img_2, cv2.COLOR_BGR2RGB)
img_3 = cv2.cvtColor(img_3, cv2.COLOR_BGR2RGB)
img_4 = cv2.cvtColor(img_4, cv2.COLOR_BGR2RGB)
# 显示图形
titles = ['噪声图像', '中值滤波', '均值滤波 ', '高斯滤波']
images = [img_1, img_2, img_3, img_4]
for i in range(4):
    plt.subplot(2, 2, i + 1)
    plt.imshow(images[i])
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

实现效果:

今日一笑:

《天津中德应用技术大学助学金之原来我才是贫困生》

相关推荐
MarkHD9 小时前
大语言模型入门指南:从原理到实践应用
人工智能·语言模型·自然语言处理
A尘埃9 小时前
NLP(自然语言处理, Natural Language Processing)
人工智能·自然语言处理·nlp
dlraba8029 小时前
机器学习实战(二):Pandas 特征工程与模型协同进阶
人工智能·机器学习·pandas
一碗白开水一9 小时前
【第19话:定位建图】SLAM点云配准之3D-3D ICP(Iterative Closest Point)方法详解
人工智能·算法
mit6.8249 小时前
[rStar] 策略与奖励大语言模型
人工智能·语言模型
CV-杨帆10 小时前
论文阅读:arxiv 2023 Large Language Models are Not Stable Recommender Systems
论文阅读·人工智能·语言模型
羊羊小栈10 小时前
基于「YOLO目标检测 + 多模态AI分析」的植物病害检测分析系统(vue+flask+数据集+模型训练)
人工智能·yolo·目标检测·毕业设计·创业创新·大作业
胡耀超10 小时前
5、Python-NumPy科学计算基础
开发语言·人工智能·python·深度学习·numpy
茜茜西西CeCe10 小时前
数字图像处理-图像的基本运算
图像处理·人工智能·计算机视觉·matlab·图像的基本运算
武子康11 小时前
AI-调查研究-74-具身智能 机器人学习新突破:元学习与仿真到现实迁移的挑战与机遇
人工智能·程序人生·ai·职场和发展·系统架构·机器人·具身智能