Как сохранить обработанные изображения в разные папки в папке на Python? - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть код, который просматривает папку «Изображения», а затем подпапки и обрабатывает все эти изображения.

Теперь мне нужно сохранить эти изображения в параллельном каталоге, то есть в папке с именем «Обработанные изображения» (в том же каталоге, что и в папке «Изображения»), а затем в подпапках в этой папке - эти подпапки называются так же, как подпапки в «Изображения» - изображение должно быть сохранено в то же имя подпапки, из которого оно было получено.

Я могу получить изображения для сохранения в 'Обработанные изображения', но не в подпапках внутри них.

path = ("...\\Images")

for dirName, subdirList, fileList, in os.walk(path):

    for file in fileList:

        full_file_path = os.path.join(dirName, file)

        if file.endswith((".jpg")):

        image_file = Image.open(full_file_path)

        image_file = image_file.convert('L')

        image_file = PIL.ImageOps.invert(image_file)

        image_file = image_file.resize((28, 28))

        new_filename = file.split('.jpg')[0] + 'new.png'

        path2 = ("...\\Processed Images")

        image_file.save(os.path.join(path2, new_filename))

    else: continue

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Я думаю, вы можете серьезно упростить этот код, используя pathlib. Я не уверен насчет тройных точек (я думаю, они должны быть двойными) в ваших базовых путях, но они могут работать для вас.

    from pathlib import Path
    path = Path("...\\Images")
    path2 = Path("...\\Processed Images")
    path2.mkdir(exist_ok=True)

    for jpg_file in p.glob('**/*.jpg'):
        full_file_path = str(jpg_file)
        image_file = Image.open(full_file_path)
        image_file = image_file.convert('L')
        image_file = PIL.ImageOps.invert(image_file)
        image_file = image_file.resize((28, 28))

        new_filename = jpg_file.stem + 'new.png'
        image_file.save(str(path2 / new_filename))
0 голосов
/ 11 ноября 2018

Вы можете использовать функцию os.mkdir() для создания новой папки. dirName, возвращаемый os.walk(), дает вам текущий путь к папке, так что вы можете просто извлечь нужную часть пути, добавить ее к ...\\Processed Images и создать новую папку, если это необходимо.

Обязательно используйте два отдельных дерева папок для входных и выходных файлов. В противном случае os.walk() найдет новые каталоги с выходными изображениями и продолжит их перебирать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...