用Python实现将多张图片排列成n*m的图像矩阵图
目录
- 引言
- 环境准备
- 代码实现
- 效果演示
- 总结
引言
在图像处理和图像展示的应用中,将多张图片排列成一个图像矩阵图是一个常见的需求。本博客介绍如何使用Python实现将12张图片排列成n*m的图像矩阵图。
环境准备
为了实现这个目标,我们需要安装Pillow库。Pillow是Python中一个强大的图像处理库,它提供了丰富的图像处理功能。
你可以使用以下命令来安装Pillow库:
pip install Pillow
代码实现
下面是Python代码的实现步骤:
- 导入所需的库:
from PIL import Image
- 加载图片:
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)
- 创建一个空白图像,并计算结果图像的大小:
result_width = images[0].width * m
result_height = images[0].height * n
result_image = Image.new("RGB", (result_width, result_height))
- 将图片拼接到空白图像上:
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))
- 展示和保存图像:
result_image.show()
result_image.save("output.jpg")
效果演示
下面是将12张图片排列成3*4图像矩阵的示例图像:
总结
本博客介绍了如何使用Python和Pillow库将12张图片排列成n*m的图像矩阵图。你可以根据需要修改代码以适应不同的图片数量和排列方式。
希望本博客能帮助你实现你的图像处理需求。谢谢阅读!
完整代码
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()