当前位置: 首页 > news >正文

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

一,情景描述

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

二,实现原理

1.读取图像

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

# 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博客

# 将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.显示图像

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

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

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),则创建是1x4的子图网格,即一行四列。如图:

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

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

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

三,完整代码


# 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()

实现效果:

今日一笑:

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

http://www.lryc.cn/news/227989.html

相关文章:

  • 数据库 关系数据理论
  • 网易数帆:云原生向左,低代码向右
  • 上线亚马逊出口美国审核CPC认证标准内容解析
  • SharePoint 的 Web Parts 是什么
  • 异星工场入门笔记-02-一个重要地学习方法
  • pyqt5学习-01 UI界面创建以及生成python代码
  • 大数据技术与原理实验报告(MapReduce 初级编程实践)
  • Redis 5大数据类型命令解读
  • 数据可视化新秀 DataEase 可否替代 Tableau?
  • Java源码分析(三)ArrayList
  • 冒泡排序
  • docker基于debian11基础环境安装libreoffice
  • Intel Devkit Call for Paper Challenge - Advanced Award
  • 【正点原子STM32连载】 第五十章 FATFS实验 摘自【正点原子】APM32F407最小系统板使用指南
  • 12. 机器学习——评价指标
  • 代码随想录算法训练营第23期day45|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数
  • uniapp公共css
  • C语言—i++、++i、条件运算符、goto语句、注释
  • Java自学第8课:电商项目(3) - 重新搭建环境
  • 深度学习_11_softmax_图片识别代码原理解析
  • Java Web——前端HTML入门
  • 华为ensp:为vlan配置ip
  • laravel8-rabbitmq消息队列-实时监听跨服务器消息
  • git清除历史提交记录保持本地文件不变
  • SOME/IP学习笔记2
  • python实现FINS协议的TCP服务端(篇一)
  • 利用uni-app 开发的iOS app 发布到App Store全流程
  • 5个高质量的实用办公软件,每一款都是良心推荐
  • 基于GPTs个性化定制SCI论文专业翻译器
  • Final Cut Pro X for Mac:打造专业级视频剪辑的终极利器