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 以删除过多的开头的零能够正确排序。
请注意,只有当所有文件名都遵循相同的模式时,这才有效,否则,您可能会遇到其他问题。
希望这可以帮助!
添加回答
举报
