科研论文中的图像拼接展示

文章目录


本文提供两种方案实现多种图像拼接成同一张。

第一种

from PIL import Image
import os

# 文件夹路径
folder_path = './new_images/'

# 获取文件夹中的特定的图像文件
image_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith(('png', 'jpg', 'jpeg'))]

# 读取第一张图像以获取大小
first_image = Image.open(image_files[0])
image_width, image_height = first_image.size

# 设置图像间隔距离为20像素
padding = 20  

# 计算新图像的总尺寸 (此实例是是十张图像进行拼接成两行五列的形状)
new_image_width = image_width * 5 + padding * 4   # 5列,有4个间隔
new_image_height = image_height * 2 + padding * 1  # 2行,有1个间隔

# 创建新图像,背景色为白色
new_image = Image.new('RGB', (new_image_width, new_image_height), (255, 255, 255))

# 将图像逐一粘贴到新图像中
for index, image_file in enumerate(image_files):
    img = Image.open(image_file)
    # 计算粘贴位置
    x_offset = (index % 5) * (image_width + padding)
    y_offset = (index // 5 )* (image_height + padding)
    # 粘贴图像
    new_image.paste(img, (x_offset, y_offset))

# 保存合并后的图像
new_image.save('combined_image_with_padding.jpg')

   上述代码实现的特点有:

  • 是十张图像进行 “两行五列”的格式进行拼接,因为自己也可以根据需要去设定拼接格式,不过需要稍微改一下某几行的代码。
  • 上述代码实现的是有左右间隔以及上下间隔的代码,因此这个也可以根据自己的需要进行间隔设定
  • 可以实现对文件夹中的特定后缀的图像进行筛选后再拼接,只需要改变其中的某一行代码就行

第二种

  此方法可以较快的实现全部图像横排或者纵排的拼接。

# 实现横向拼接和纵向拼接

dirs = os.listdir("./new_images/")

img_array = ''
img = ''
for i, v in enumerate(paths):
    path = os.path.join("./new_images/", v)
    if i == 0:
        img = Image.open(path)  # 打开图片
        img_array = np.array(img)  # 转化为np array对象
    if i > 0:
        img_array2 = np.array(Image.open(path))
#         img_array = np.concatenate((img_array, img_array2), axis=1)  # 横向拼接
        img_array = np.concatenate((img_array, img_array2), axis=0)  # 纵向拼接
        img = Image.fromarray(img_array)
 
# 保存图片
img.save('concat-axis=0.jpg')
  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值