Python同时显示多张图片在一个画面中(两种方法)

article/2025/7/28 7:31:55

很多时候需要把很多图片同时显示到一个画面中,现在分享两个方法,这里我恰好拿之前写的爬取网上图片保存到本地的爬虫模型爬一些图片作为素材Python 爬虫批量爬取网页图片保存到本地。
得到素材如下所示:
在这里插入图片描述
现在让这些图片同时显示。

方法一

subplot函数,这个方法比较简单,这个函数会把每个图片作为一个单独的部分自动整合到同一个画面中 ,使用方法如下:

import matplotlib.pyplot as plt
import numpy as npN=4
M=8
#形成NxM大小的画布
for i in range(27):#有27张图片path='pictures//变形金刚'+str(i)+'.jpg'img = plt.imread(path)plt.subplot(N,M,i+1)#表示第i张图片,下标只能从1开始,不能从0,plt.imshow(img)#下面两行是消除每张图片自己单独的横纵坐标,不然每张图片会有单独的横纵坐标,影响美观plt.xticks([])plt.yticks([])
plt.show()

运行结果如下:
在这里插入图片描述上面这个代码的好处就是比较简洁,但是也有麻烦的,就是你缩放整个界面大小,每个图片之间的距离会发生变化,原因是每个图片还是一个单一的部分,下面介绍一个复杂的。

方法二

自定义,把所有图片合并成一张图片,当计算机读取图片时,图片本质就是一堆数字,这里需要修改下每张图片的尺寸,于是我自己用分治思想手写了个修改函数,点击这里查看Python手写修改图像尺寸大小的函数–利用二分+递归的原理。

完整代码如下:

import matplotlib.pyplot as plt
import numpy as np
def reshape_pictures1(data,N):#改变竖直方向大小n,m,d=data.shapeX=np.zeros([N,m,d],dtype=int)if n>N:if n%N==0:#判断是否为倍数关系,如果是可以直接修改d=int(n/N)for i in range(N):X[i]=data[i*d]return Xelse:mid1=int(n/2)mid2=int(N/2)if 0<mid1:X[0:mid2]=reshape_pictures1(data[0:mid1],mid2)#递归if mid1<n:X[mid2:N]=reshape_pictures1(data[mid1:n],N-mid2)#递归return Xelse:if N%n==0:d=int(N/n)for i in range(n):for j in range(d):X[i*d+j]=data[i]return Xelse:mid1=int(n/2)mid2=int(N/2)if 0<mid1:X[0:mid2]=reshape_pictures1(data[0:mid1],mid2)#递归if mid1<n:X[mid2:N]=reshape_pictures1(data[mid1:n],N-mid2)#递归return X
def reshape_pictures2(data,M):#改变水平方向大小n,m,d=data.shapeX=np.zeros([n,M,d],dtype=int)if m>M:if m%M==0:d=int(m/M)for i in range(M):X[:,i]=data[:,i*d]return Xelse:mid1=int(m/2)mid2=int(M/2)if 0<mid1:X[:,0:mid2]=reshape_pictures2(data[:,0:mid1],mid2)if mid1<m:X[:,mid2:M]=reshape_pictures2(data[:,mid1:m],M-mid2)return Xelse:if M%m==0:d=int(M/m)for i in range(m):for j in range(d):X[:,i*d+j]=data[:,i]return Xelse:mid1=int(m/2)mid2=int(M/2)if 0<mid1:X[:,0:mid2]=reshape_pictures2(data[:,0:mid1],mid2)if mid1<m:X[:,mid2:M]=reshape_pictures2(data[:,mid1:m],M-mid2)return X
def reshape_pictures(data,N,M):#最终的修改函数X=reshape_pictures1(data,N)#修改竖直方向使得大小一致X=reshape_pictures2(X,M)#修改水平方向使得大小一致return X
#data表示所有图片合集,n和m分别表示每个图片要显示的大小,d表示图片之间的间隔单位
#row和col分别表示画面的长和宽
def show_pictures(data,n,m,d,rows,cols):num=len(data)#得到图片数目for i in range(num):#修改所有图片尺寸data[i]=reshape_pictures(data[i],n,m)#修改尺寸为n x mX=np.zeros([(n+d)*rows,(m+d)*cols,3],dtype=int)page=0for row in range(rows):for col in range(cols):if page>=num:breakfor i in range(n):for j in range(m):X[row*(n+d)+i][col*(m+d)+j]=data[page][i][j]page+=1plt.imshow(X)plt.xticks([])#删除坐标刻度plt.yticks([])#删除坐标刻度plt.show()if __name__ == '__main__':data=[]for i in range(27):#有27张图片path='pictures//变形金刚'+str(i)+'.jpg'img = plt.imread(path)#读取图片reshape_pictures(img,400,400)data.append(img)show_pictures(data,100,100,1,4,8)#图片大小为100x100,图片间隔为1,整个界面内容为4x8=32张图片

运行结果:
在这里插入图片描述

希望我的分享对你的学习有所帮助,如果有问题请及时指出,谢谢~


http://chatgpt.dhexx.cn/article/NIuZxZL5.shtml

相关文章

python 打开 显示图片

import matplotlib.pyplot as plt # plt 用于显示图片 from PIL import Imageplt.figure() plt.plot([1,2], [1,2])plt.rcParams[font.sans-serif] [SimHei] # 中文乱码 plt.imshow(Image.open("b.png"))plt.axis(off)plt.tight_layout() manager plt.get_current…

python 把matplotlib绘制的图片显示到html中

需求 一般网页中图片显示是给url链接过去&#xff0c;但是有的时候显示的图表是临时计算绘制的&#xff0c;并不需要保存&#xff0c;因此就需要直接显示一个图片的方法。 灵感是来自于jupyter&#xff0c;发现他是这样的&#xff1a; 估计是base64编码了。 查了一下如何把ma…

python如何将图片显示在网页上

from flask import Flask, render_template_string import base64 import cv2import osapp Flask(__name__)# 读取图像app.route(/)def index():# 读取图像文件并将其转换为Base64编码的字符串img_path 1.pngimg_data open(img_path, rb).read()img_base64 base64.b64encod…

python matplotlib 显示图像

python matplotlib 显示图像 首先需要import import os from PIL import Image import matplotlib.pyplot as plt 显示一幅彩色图片 img Image.open(os.path.join(images, 2007_000648 .jpg))plt.figure("Image") # 图像窗口名称 plt.imshow(img) plt.axis(on)…

python中plt.imshow()不显示图片

python画图函数可能是需要一些设置&#xff0c;或者一些特定的函数运行才会出现图片的。 Python中plt.imshow(image)无法显示图片解决办法 使用plt.imshow()发现不能显示图片&#xff0c;加了plt.show()也还是不能显示 先引入包pylab import pylab 然后在plt.imshow(img)后面…

Python tkinter之PhotoImage图片显示问题

作为Python小白的你&#xff0c;有没有遇到过这几个问题&#xff1f; PhotoImage不支持jpg等图片格式&#xff1b;将PhotoImage放在函数里图片不显示&#xff1b;循环加入图片只显示一张&#xff1b; 这些难倒了一大批小白&#xff0c;那么接下来&#xff0c;本文教你如何解决…

python图显示在新的窗口_python在新的图片窗口显示图片(图像)的方法

python在新的图片窗口显示图片(图像)的方法 使用python画图,发现生成的图片在console里。不仅感觉很别扭,很多功能也没法实现(比如希望在一幅图里画两条曲线)。 想像matlab一样单独地生成一个图片窗口,然后我在网上找了一个多小时,都没有找到想要的,要么仅仅是画图的教…

python人工智能-动态显示图片的几种办法实现

python人工智能动态显示图片 任务简介&#xff0c;在电脑创建一个文件加&#xff0c;利用代码往文件加入照片文件&#xff0c; 然后动态显示该文件夹中的照片&#xff0c;显示给用户观看&#xff0c;可以利用open-cv&#xff0c;matplotlib,PIL等技术实现 这里是电脑一个装有照…

Python 3 显示图像的方法

如果你正在寻找一个库来帮助你在 Python 中显示图像&#xff0c;那么你很幸运。Python 有许多不同的库可用于显示图像。三个最受欢迎的库是Pickel、Matplotlib 和 OpenCV。 到底应该选哪一个&#xff0c;还是看自己的个人喜好了。我喜欢并使用 OpenCV 而不是 Pillow 和 Matplot…

python显示图片_python图像显示

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 使用python进行数字图片处理,还得安装pillow包。 虽然python里面自带一个pil(python images library), 但这个库现在已经停止更新了,所以使用pillow, 它是由p…

python显示图片

python显示图片两种方法 1.利用Pillow包 未安装的可以通过pip install Pillow安装 from PIL import Image img Image.open(notMNIST_large/A/aGFua28udHRm.png) img.show() 显示的图片如下&#xff1a; 2.利用matplotlib 同样可以通过pip进行安装 from PIL import Image …

使用Python查看并显示图像

今天又来写一个Python的基础用法&#xff0c;使用Python来显示图像&#xff0c;不多说&#xff0c;代码如下&#xff1a; import matplotlib.pyplot as plt from matplotlib.image import imreadimg imread(C:/Users/xx/Desktop/xx.jpg) plt.imshow(img)plt.show() 2022.05.1…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用

普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光的信息。与昂贵、不易获取的高光谱、高空间分辨率卫星数据相比&#xff0c;中等分辨…

推扫式和快照式高光谱成像系统在红肉掺假检测中的应用

目录 摘要 推扫式高光谱成像系统的应用 快照式高光谱成像系统的应用 总结 参考文献 摘要 肉类掺假常见于用低价肉代替高价肉获取非法利益&#xff0c;它不但影响了食品的质量&#xff0c;甚至会威胁到人们的健康。目前的检测手段一般是取样后送样检测&#xff0c;很难实时…

不同光谱信息的图像比较

首先&#xff0c;我们要知道普通光学相机在自然光下拍的照片其实并不包含完整的光谱信息&#xff0c;一般在遥感领域&#xff0c;多/高光谱数据应该包含近红外波段&#xff0c;例如Landsat有如下波段&#xff1a; 编号 波长&#xff08;m&#xff09; 1 0.433–0.453 深蓝/紫…

双目多光谱融合_Matlab标定+OpenCV

1.标定注意事项 (1)标定板平整度 (2)棋盘格&#xff0c;圆&#xff08;偏心误差&#xff09;&#xff1b;精度&#xff1a;圆>棋盘格&#xff0c;前提条件优化偏心误差 (3)所有标定数据加一起尽量布满整个视野 (4)左右相机采用近处标定数据分别进行单目标定&#xff0c;…

卫星扫描高光谱图像成像原理图

中文版高清高光谱图像卫星扫描成像原理图。 因为毕业论文需要&#xff0c;自己弄了个pdf高清版的。可以转成eps、svg、png等。 下面上传个截图。

【高光谱】成像基础知识

图像分类及成像原理 RGB图像遥感成像原理全色图像高光谱图像多光谱图像 RGB图像 首先提出一个问题可以通过RGB图像恢复高光谱图像吗&#xff1f; 一句话就是RGB图像本身就不包含高光谱的信息&#xff0c;自然也就无法通过图像处理从RGB图像恢复到高光谱图像。 可见普通的可见…

功能近红外光谱成像技术在神经科学领域的临床应用

类似于功能磁共振成像技术&#xff08;fMRI&#xff09;&#xff0c;功能近红外光谱成像技术&#xff08;fNIRS&#xff09;检测大脑内血红蛋白种类的变化&#xff0c;但是是通过光学吸收的差异。在近红外光谱中&#xff0c;光可以穿透生物组织并被发色团&#xff08;如氧合血红…

AOTF偏振光谱成像仪的原理及构造

偏振超光谱成像技术是一个新兴的交叉技术领域&#xff0c;探索该技术在航天、民用等领域的应用已经成为国内外的重点研究课题&#xff0c;特别是基于声光可调谐滤波器&#xff08;AOTF&#xff09;的光谱成像仪&#xff0c;与传统仪器相比&#xff0c;在工作机制和仪器设计上都…