Python/OpenCV-如何按字母顺序从文件夹加载所有图像



如何按字母顺序加载给定文件夹中的所有图像?

代码如下:

images = []
for img in glob.glob("images/*.jpg"):
    n= cv2.imread(img)
    images.append(n)
    print (img)

返回:

...
images/IMG_9409.jpg
images/IMG_9425.jpg
images/IMG_9419.jpg
images/IMG_9376.jpg
images/IMG_9368.jpg
images/IMG_9417.jpg
...

有没有一种方法可以获得所有图像,但顺序正确?

幸运的是,python列表有一个内置的排序函数,可以使用ASCII值对字符串进行排序。这很简单,就把这个放在你的循环之前:

filenames = [img for img in glob.glob("images/*.jpg")]
filenames.sort() # ADD THIS LINE
images = []
for img in filenames:
    n= cv2.imread(img)
    images.append(n)
    print (img)

编辑:现在比我第一次回答这个问题时了解了更多关于python的信息,实际上你可以简化很多:

filenames = glob.glob("images/*.jpg")
filenames.sort()
images = [cv2.imread(img) for img in filenames]
for img in images:
    print img

应该也快得多。你列出了理解!

正如人们所提到的,filename.sort()顺序不是解决这个问题的自然顺序使用:

natsorted

file=natsorted (filenames) # ADD THIS LINE
images = []
for img in file:
    n= cv2.imread(img)
    images.append(n)

相关内容

  • 没有找到相关文章

最新更新