当前位置:首页 >> 编程语言 >> 【Python】Matplotlib-多张图像的显示,ati stream sdk

【Python】Matplotlib-多张图像的显示,ati stream sdk

0evadmin 编程语言 2
文件名:【Python】Matplotlib-多张图像的显示,ati stream sdk 【Python】Matplotlib-多张图像的显示 一,情景描述

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

二,实现原理 1.读取图像

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

# encoding:utf-8import cv2import matplotlib.pyplot as pltplt.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图像转换为RGBimg_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-8import cv2import matplotlib.pyplot as pltplt.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图像转换为RGBimg_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()

实现效果:

今日一笑:

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

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接