1 回答

TA貢獻1794條經驗 獲得超8個贊
你在這里有兩個問題:
首先是您試圖自己對圖像進行排序,而不是使用它們的文件名。正如評論中所指出的,您應該首先對列表進行排序,然后加載圖像:
path = r'...'
image_list = glob.glob(path + '*.jpg')
sortedlist = sorted(image_list)
loaded_images = []
for filename in image_list:
im = Image.open(filename)
loaded_images.append(im)
第二個是當您對列表進行排序時,sorted使用文件名,從而使用字母順序,而不是像您想要的那樣使用文件名的最后一個數字進行排序。
我建議在這里使用自定義鍵對列表進行不同的排序。假設文件名始終遵循相同的模式_DSC<number1>_<number2>.<ext>,您希望根據 對文件進行排序number2,您可以使用:
sortedlist = sorted(
image_list,
key=lambda filename: int(filename.split('_')[-1].split('.')[0])
)
此處的 lambda 將針對它獲取的每個元素(在本例中為文件名)拆分_為最后一個元素,因此在本例中為最后一個數字,不帶擴展名(因此為.split('.')[0])并將其轉換為 int 以刪除過多的開頭的零能夠正確排序。
請注意,只有當所有文件名都遵循相同的模式時,這才有效,否則,您可能會遇到其他問題。
希望這可以幫助!
添加回答
舉報