如何从python中的不同文件夹和子文件夹加载图像

时间:2017-08-03 12:50:39

标签: python tensorflow deep-learning

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

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

这是一条路径。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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变量中的所有文件。

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