python脚本无缝拼接图片

1、普通串行:

import numpy as np
from PIL import Image
images = ['img01','img02',...'imgxx']
img=''
img_array=''
for index,value in enumerate(images):
    if index==0:
        img_array = np.array(Image.open(value))
    else:
        img_array2 = np.array(Image.open(value))
        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("test.png")#图片太大需要保存为png格式

JPG输出限制为65500*65500像素,超出则需要保存为png格式
2、并行

from PIL import Image
import os
import numpy as np
from joblib import Parallel,delayed

path = r"D:\...\img_path"

#每个文件夹下的照片文件镶嵌为一张大图
def func_mosaic(root,dirs,files):
    print(root)
    images = []
    for f in files:
        images.append(f)
    img=''
    img_array=''
    if len(images) == 0:
        return
    if len(images) != 0:
        for index,image in enumerate(images):
            image = os.path.join(root,image)
            if index == 0:
                img_array = np.array(Image.open(image))
            else:
                img_array2 = np.array(Image.open(image))
                img_array = np.concatenate((img_array,img_array2),axis=1)
                img = Image.fromarray(img_array)
    savepath = os.path.join(r"D:\...\img.png")
    img.save(savepath)
#开启两个线程并行遍历目录,拼接图片
Parallel(n_jobs=2)(delayed(func_mosaic)(root,dirs,files) for root,dirs,files in os.walk(path))

你可能感兴趣的:(其他,python,图像处理)