python将多张图片拼成一张矩阵图,合成一张大图

用Python实现将多张图片排列成n*m的图像矩阵图


目录


引言

在图像处理和图像展示的应用中,将多张图片排列成一个图像矩阵图是一个常见的需求。本博客介绍如何使用Python实现将12张图片排列成n*m的图像矩阵图。

环境准备

为了实现这个目标,我们需要安装Pillow库。Pillow是Python中一个强大的图像处理库,它提供了丰富的图像处理功能。

你可以使用以下命令来安装Pillow库:

复制代码
pip install Pillow

代码实现

下面是Python代码的实现步骤:

  1. 导入所需的库:
python 复制代码
from PIL import Image
  1. 加载图片:
python 复制代码
images = []
for i in range(0, 12): # 加载12张图片,假设图片名分别为0.jpg, 1.jpg, ..., 11.jpg
    image_path = f"{i}.jpg"
    image = Image.open(image_path)
    images.append(image)
  1. 创建一个空白图像,并计算结果图像的大小:
python 复制代码
result_width = images[0].width * m
result_height = images[0].height * n
result_image = Image.new("RGB", (result_width, result_height))
  1. 将图片拼接到空白图像上:
python 复制代码
for i in range(n):
    for j in range(m):
        image_index = i * m + j
        result_image.paste(images[image_index], (j * images[0].width, i * images[0].height))
  1. 展示和保存图像:
python 复制代码
result_image.show()
result_image.save("output.jpg")

效果演示

下面是将12张图片排列成3*4图像矩阵的示例图像:

总结

本博客介绍了如何使用Python和Pillow库将12张图片排列成n*m的图像矩阵图。你可以根据需要修改代码以适应不同的图片数量和排列方式。

希望本博客能帮助你实现你的图像处理需求。谢谢阅读!

完整代码

python 复制代码
def arrange():
    from PIL import Image
    import numpy as np

    # 加载12张图片,假设图片名分别为0.jpg, 1.jpg, ..., 11.jpg
    images = []
    for i in range(0, 12):
        image_path = f"/home/you/pic/{i}.jpg"
        image = Image.open(image_path)
        images.append(image)

    # 创建一个空白图像,用于拼接图片
    result_width = images[0].width * 4
    result_height = images[0].height * 3
    result_image = Image.new("RGB", (result_width, result_height))

    # 将图片拼接到空白图像上
    for i in range(3):
        for j in range(4):
            image_index = i * 4 + j
            result_image.paste(images[image_index], (j * images[0].width, i * images[0].height))

    # 展示和保存拼接后的图像
    result_image.show()
    result_image.save("output1.jpg")




if __name__ == '__main__':
    import cv2
    import os
    # 以下代码是先把多张图片处理成相同尺寸,并按照0~11.jpg命名(假设有12张图片)
	# 存放原图片的文件夹路径
    path = r"/home/you/pic" 
    list = os.listdir(path)
    for index, i in enumerate(list):
        l = r"/home/you/pic/{}".format(i)
        img = cv2.imread(l)
        # 将尺寸处理成640*640
        img = cv2.resize(img, (640, 640))
        # 处理后的图片名
        s = r"/home/you/{}.jpg".format(index)  
        cv2.imwrite(s, img)
    
    arrange()
相关推荐
延凡科技1 小时前
无人机低空智能巡飞巡检平台:全域感知与智能决策的低空作业中枢
大数据·人工智能·科技·安全·无人机·能源
2501_941329721 小时前
YOLOv8-SEAMHead改进实战:书籍检测与识别系统优化方案
人工智能·yolo·目标跟踪
晓翔仔2 小时前
【深度实战】Agentic AI 安全攻防指南:基于 CSA 红队测试手册的 12 类风险完整解析
人工智能·安全·ai·ai安全
百家方案3 小时前
2026年数据治理整体解决方案 - 全1066页下载
大数据·人工智能·数据治理
北京耐用通信3 小时前
工业自动化中耐达讯自动化Profibus光纤链路模块连接RFID读写器的应用
人工智能·科技·物联网·自动化·信息与通信
TracyCoder1233 小时前
LeetCode Hot100(15/100)——54. 螺旋矩阵
算法·leetcode·矩阵
小韩博4 小时前
一篇文章讲清AI核心概念之(LLM、Agent、MCP、Skills) -- 从解决问题的角度来说明
人工智能
沃达德软件5 小时前
人工智能治安管控系统
图像处理·人工智能·深度学习·目标检测·计算机视觉·目标跟踪·视觉检测
高工智能汽车5 小时前
爱芯元智通过港交所聆讯,智能汽车芯片市场格局加速重构
人工智能·重构·汽车
大力财经5 小时前
悬架、底盘、制动被同时重构,星空计划想把“驾驶”变成一种系统能力
人工智能