【问题标题】:how to load images from different folders and subfolders in python如何在python中从不同的文件夹和子文件夹加载图像
【发布时间】:2017-08-04 12:57:13
【问题描述】:

我正在开发一个动物分类数据集中的CNN,分为2个文件夹,2个文件夹涉及到另外一个子文件夹……这个结构有4层,现在我想加载它们并将它们转换为n-dimension-arrays 提供给 tensorflow,这些文件夹的名称是标签。 我希望有人可以帮助我提供一些具体的代码或一些有用的材料。 非常感谢您!

这里我举几个例子: Anisopleura Libellulidae Leach, 1815 Trithemis aurora Zygoptera Calopterygidae Selys, 1850 Calopteryx splendens 极光和芨芨草是这个问题的标签,也是五楼子文件夹的名称,图片存放在这些文件夹中。 C:\Users\Seth\Desktop\dragonfly\Anisopleura\Libellulidae Leach, 1815\Pseudothemis\zonata

这是一条路径。

【问题讨论】:

  • 文件夹布局的一个例子会很有帮助
  • 请先显示您的目录结构。
  • C:\Users\Seth\Desktop\dragonfly\Anisopleura\Aeshnidae Leach, 1815\Anax\parthenope ##这是一个例子,我想也许我可以从下面的答案中得到答案。跨度>

标签: python tensorflow deep-learning


【解决方案1】:

我使用 openface 库进行人脸识别,在这个库中 iterImgs 是一种方法,可以列出目录下的所有图像

详情iterImgs

from openface.data import iterImgs

imgs = list(iterImgs("Directory path"))

print imgs    # print all images in Directory path also in Tree

或者另一种方式是定义一个有效的扩展

vailed_ext = [".jpg",".png"]
import os 
f_list = []
def Test2(rootDir):     
    for lists in os.listdir(rootDir): 
        path = os.path.join(rootDir, lists) 
        filename, file_extension = os.path.splitext(path) 
        if file_extension in vailed_ext:
            print path          
            f_list.append[path]
        if os.path.isdir(path): 
           Test2(path)

Test2("/home/")
print f_list

【讨论】:

  • 谢谢!但是如果我想从多个子文件夹(不同的路径)加载许多图像,我该怎么办?
【解决方案2】:

os.walk() 就是你要找的东西。

import os

# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
    print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        print(len(path) * '---', file)

此代码将允许您递归解析所有文件夹和子文件夹。您将获得子文件夹的名称(在您的情况下为标签)和 file 变量中的所有文件。

接下来的工作可能是创建一个字典(或 numpy 多维数组)来为每个标签(或子文件夹)存储图像的特征。

【讨论】:

  • 谢谢!其实我理解这个功能但我认为它只能解决两层子文件夹的问题,在我的情况下有四层或更多层,例如 C:\Users\Seth\Desktop\dragonfly\Anisopleura\Aeshnidae Leach, 1815 \Anax\parthenope,是数据集的一种,这个问题我该怎么办?
  • 你能从那些(这个?我真的不明白你的路径是如何切割的)路径中详细说明需要提取的标签吗?
  • C:\Users\Seth\Desktop\dragonfly\Anisopleura\Aeshnidae Leach, 1815\Anax\parthenope ##在这个例子中,“parthenope”是标签,从动物学的概念来看,这些文件夹的名称表示蜻蜓的亚目、科、属、种。不知道我说的清楚没有,希望你能明白我说的。
  • 只有最后一个文件夹包含标签?是否应该使用所有其他文件夹名称? (蜻蜓?Anisopleura)。你能用一个完整的例子来编辑你的问题吗?你想用给定的输入做什么(例如图像文件的路径列表)以及脚本应该创建什么作为数组?
  • 鉴于您刚刚添加到问题中的内容,您应该执行我提供的路径代码:C:\Users\Seth\Desktop\dragonfly。你会看到在给PNG文件的名字之前,会有你想要的标签列表。
猜你喜欢
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2014-01-03
相关资源
最近更新 更多