Использование os.listdir () для чтения изображений из набора данных LFW позволяет читать изображения только из первой файловой папки - PullRequest
2 голосов
/ 26 марта 2019

Набор данных LFW помещает изображения в разные папки на основе имен.Я хочу прочитать и переместить все изображения в одну папку.Я использовал цикл for с функцией os.listdir() для чтения файла, но он возвращает изображение только из первой папки в наборе данных 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.

1 Ответ

0 голосов
/ 26 марта 2019

Одной из очевидных проблем является отступ в вашем операторе возврата:

'''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)

Можете ли вы проверить и подтвердить, содержит ли первая папка (парни), с которой она работает, несколько изображений.

...