使用操作系统列表目录()要从LFW数据集读取图像,只能从第一个文件折叠中读取图像

2024-06-02 16:42:33 发布

您现在位置:Python中文网/ 问答频道 /正文

LFW数据集根据名称将图像放入不同的文件夹中。我想阅读并移动所有图像到一个文件夹。我使用了带有os.listdir()函数的for循环来读取文件,但它只返回LFW数据集中第一个文件夹中的图像。在

'''code is showing below the line'''

    import os
    from os.path import join as pjoin
    from skimage import io
    img_dir = 'new path'
    def load_data(data_dir): #dataset is the originalPath

        count = 0
        for guys in os.listdir(data_dir):
            print(guys)
            person_dir = pjoin(data_dir, guys)
            for i in os.listdir(person_dir):
                image_dir = pjoin(person_dir, i)
                img22 = io.imread(image_dir, mode='RGB')
                print(image_dir)
                io.imsave(pjoin(img_dir, i), img22)
                count = count+1
            print(person_dir)
            print(count)
            return count

    sourcepath = 'originalPath'
    load_data(sourcepath)

预期的结果是LFW数据集的所有文件夹中的所有图像都被读取到新路径(不在任何文件夹中,只读取图像) 代码运行时没有出错,但是计数实际上返回'1',我可以看到在新路径中,只有1个图像,它位于LFW数据集的第一个文件夹中。在


Tags: 数据io图像import文件夹fordataos
1条回答
网友
1楼 · 发布于 2024-06-02 16:42:33

一个明显的问题是您的返回语句的缩进:

'''code is showing below the line'''

    import os
    from os.path import join as pjoin
    from skimage import io
    img_dir = 'new path'
    def load_data(data_dir): #dataset is the originalPath

        count = 0
        for guys in os.listdir(data_dir):
            print(guys)
            person_dir = pjoin(data_dir, guys)
            for i in os.listdir(person_dir):
                image_dir = pjoin(person_dir, i)
                img22 = io.imread(image_dir, mode='RGB')
                print(image_dir)
                io.imsave(pjoin(img_dir, i), img22)
                count = count+1
            print(person_dir)
        print(count)
        return count

    sourcepath = 'originalPath'
    load_data(sourcepath)

你能检查并确认第一个文件夹(家伙)是否有多个图像。在

相关问题 更多 >