Je suis en train d'assembler environ 50 images (toutes dans la même taille 287x287). Plus précisément, il devrait y avoir 25 images sur la rangée du haut et 25 images sur la rangée du bas, et il existe également une petite distance entre chaque image.assembler des images ensemble en python
j'ai rencontré deux difficultés lors de mes tentatives:
Le premier problème est qu'il ya 25 images dans un dossier avec leur nom 'prefix-70',...,'prefix-94'
tandis que d'autres 25 images dans un autre dossier du même nom 'prefix-70',...,'prefix-94'
. Je ne sais pas comment les faire en Python sans conflits.
Le deuxième problème est que j'ai écrit le code suivant pour lire un dossier images pour former une rangée, mais il sort une colonne.
#!/usr/bin/python3.0
#encoding=utf-8
import numpy as np
from PIL import Image
import glob,os
if __name__=='__main__':
#prefix=input('Input the prefix of images:')
prefix = 'prefix'
files=glob.glob(prefix+'-*')
num=len(files)
filename_lens=[len(x) for x in files] #length of the files
min_len=min(filename_lens) #minimal length of filenames
max_len=max(filename_lens) #maximal length of filenames
if min_len==max_len:#the last number of each filename has the same length
files=sorted(files) #sort the files in ascending order
else:
index=[0 for x in range(num)]
for i in range(num):
filename=files[i]
start=filename.rfind('-')+1
end=filename.rfind('.')
file_no=int(filename[start:end])
index[i]=file_no
index=sorted(index)
files=[prefix+'-'+str(x)+'.png' for x in index]
print(files[0])
baseimg=Image.open(files[0])
sz=baseimg.size
basemat=np.atleast_2d(baseimg)
for i in range(1,num):
file=files[i]
im=Image.open(file)
im=im.resize(sz,Image.ANTIALIAS)
mat=np.atleast_2d(im)
print(file)
basemat=np.append(basemat,mat,axis=0)
final_img=Image.fromarray(basemat)
final_img.save('merged.png')
Je suppose que je suis entré dans une mauvaise façon ... Comment puis-je les assembler correctement? Toute suggestion est appréciée.
Pour obtenir une ligne au lieu d'une colonne, il suffit de changer 'axe = 0' à' axe = 1'. – Junuxx
Merci. Et comment pourrais-je faire une distance entre les images et comment construire deux rangs comme dit dans le premier problème? –