【问题标题】:reading multiple images in python based on their filenames根据文件名在python中读取多个图像
【发布时间】:2020-02-04 14:16:47
【问题描述】:

我有一个包含 100 张人眼图像的文件夹。我在该文件夹中有 50 个名为视网膜的文件和 50 个名为 mask 的文件。我需要读取所有名为retina1、retina2 .....retina 50 的图像并将它们存储在对象视网膜中。对于遮罩图像也是如此。

我可以根据下面的代码读取文件夹中的所有文件。但不确定如何根据文件名读取它们。即分别读取视网膜和蒙版的所有图像。因为我需要稍后实现图像分割和 cnn 分类器。

for i in os.listdir():
   f = open(i,"r")
   f.read()
   f.close()

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    我会使用 glob 模块来获取正确文件名的路径。 参考glob

    import glob
    
    retina_images = glob.glob(r"C:\Users\Fabian\Desktop\stack\images\*retina*")
    mask_images = glob.glob(r"C:\Users\Fabian\Desktop\stack\images\*mask*")
    print(retina_images)
    print(mask_images)
    

    现在您可以使用路径列表来读取正确的文件。

    就我而言,我的图片位于: C:\Users\Fabian\Desktop\stack\images\ 可以使用* 作为通配符。

    编辑:

    import glob
    
    images = {}
    patterns = ["retina", "mask"]
    for pattern in patterns:
        images[pattern] = glob.glob(r"C:\Users\fabia\Desktop\stack\images\*{}*".format(pattern)) 
    print(images)
    

    从您的搜索模式中生成一个字典可能会有所帮助。

    【讨论】:

    • 如果视网膜和蒙版图像数量相同,您可以将它们zip 放在一起。
    【解决方案2】:

    您可以通过将循环与生成器表达式组合来限制循环以匹配某些文件名。

    for i in (j for j in os.listdir() if 'retina' in j):
       f = open(i,"r")
       f.read()
       f.close()
    

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2016-01-26
      • 1970-01-01
      • 2018-09-07
      • 2021-05-04
      • 2018-07-07
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多