【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,即取出images0,即第一张图,放到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()

实现效果:

今日一笑:

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

相关推荐
法正智能7 分钟前
AI编标赛道的终局:法正智能用“编+检+数据资产”构建企业级护城河
人工智能
龙亘川12 分钟前
数智赋能退役军人服务:V1.0 系统搭建全生命周期闭环服务体系
大数据·数据库·人工智能
阳明山水43 分钟前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
阿雄不会写代码1 小时前
【AI Agent】自学笔记
人工智能
克里斯蒂亚诺更新1 小时前
Transformer(注意力机制)不按顺序-全盘扫描
人工智能·深度学习·transformer
呆呆槑_Xiong1 小时前
国内GEO生成式引擎优化公司对比 2026
人工智能
Dawson Zhu1 小时前
大语言模型的本质:从条件概率预测到能力涌现的技术剖析
人工智能·语言模型·架构·aigc·agi
gzkuijing1 小时前
MDI1PRD23B7‑EQ|Novanta IMS一体化RS-485/422步进电机参数、选型要点与典型应用
人工智能·机器学习·编辑器
能源科技集1 小时前
不止于“大”:远景动力(AESC)790Ah电芯以系统级思维重塑储能技术路线
人工智能
骥龙1 小时前
模块五:n8n自动化工作流 + Ollama + Health-MCP
人工智能·ai编程