从目录导入图像(Python)

Cha*_*les 34 python python-imaging-library pillow

有没有办法导入目录中的所有图像(目录位置已知).
如果有帮助,我已经找到了找出目录长度的方法.
我不确定的是如何将图像(使用PIL/Pillow)导入列表或字典中.

use*_*942 50

我首先使用glob:

from PIL import Image
import glob
image_list = []
for filename in glob.glob('yourpath/*.gif'): #assuming gif
    im=Image.open(filename)
    image_list.append(im)
Run Code Online (Sandbox Code Playgroud)

然后执行您需要处理的图像列表(image_list).

  • `image_list = map(Image.open,glob('your/path/*.gif'))` (4认同)
  • @JFSebastian `image_list = [Image.open(item) for i in [glob.glob('your/path/*.%s' % ext) for ext in ["jpg","gif","png"," tga"]] 用于 i]` 中的项目;) (3认同)
  • 比我的更好的解决方案(正确使用 glob),但是对于其他图像类型更难以扩展 - 除非您想要更复杂的正则表达式。 (2认同)
  • 还有一件事需要注意...有时我会处理 1000 张或 1000 张图像中的 10 张,然后天真地将它们全部放入列表中是愚蠢的。如果我使用 for 循环进行迭代,则可以更轻松地将它们分成批次并在我的 RAM 限制内进行操作。 (2认同)

Ton*_* 66 17

from PIL import Image
import os, os.path

imgs = []
path = "/home/tony/pictures"
valid_images = [".jpg",".gif",".png",".tga"]
for f in os.listdir(path):
    ext = os.path.splitext(f)[1]
    if ext.lower() not in valid_images:
        continue
    imgs.append(Image.open(os.path.join(path,f))
Run Code Online (Sandbox Code Playgroud)

这应该工作 - 没有测试.