Python逐一读取,修改,保存文件夹中的图像文件

import argparse
import os
from PIL import Image   # PIL是Python强大的图像处理库。


def extract_images(images_path, out_path, num_images):

    print('extracting images from {} to {}'.format(images_path, out_path))

    # os.listdir(path)返回指定路径下所有的文件和文件夹的名字,并存放在一个列表中。
    images_files = os.listdir(images_path)
    print(images_files, num_images)

    images_files = images_files[:num_images]   # 只读取规定数量的图像

    for index, image_file in enumerate(images_files):
        imaeg_file_name = image_file.split('.')[0]

        # os.path.join连接两个或更多的路径名组件,如果各组件首字母不包含'/',自动加上
        im_path = os.path.join(images_path, image_file)

        im = Image.open(im_path)   # 使用PIL中的函数读取图像的路径,此时的图像应该是PIL image。
        w, h = im.size

        # 使用PIL模块中的 resize 函数修改图像尺寸大小,这里尺寸要加两个括号。
        im1 = im.resize((640,640))

        # os.path.split(‘pah’)函数可以实现路径分割功能,仅仅以‘path’中最后一个/作为分隔符
        # 分隔开后,将索引为0的视为目录(路径),索引为1的视为文件名。
        name = os.path.split(im_path)
        # 这里,name[0]是目录,name[1]是文件名。

        save_name = os.path.join(out_path)   # 这里是因为只有一个路径,所以save_name和out_path路径相同
        # print(save_name, out_path)
        save_name = os.path.join(save_name, name[1])   # 连接两个路径
        im1.save(save_name)   # 保存图像
        print(save_name)


def parse_args():
    args_parser = argparse.ArgumentParser(description='Extract image from files and resize image')

    args_parser.add_argument('--path_to_images', type=str, help='path for input images',
                             default='D:/A_dataset/test/img')   # 输入路径
    args_parser.add_argument('--output_images_path', type=str, help='output images path',
                             default='D:/A_dataset/test/img1')   # 输出路径
    args_parser.add_argument('--num_images', type=int,
                             default=1000, help='images')

    args = args_parser.parse_args()
    return args


def main():
    args = parse_args()
    if not os.path.isdir(args.output_images_path):
        os.mkdir(args.output_images_path)

    images_path = args.path_to_images   # 文件的输入路径
    # print(images_path)   # print:D:/A_dataset/test/img

    out_path = args.output_images_path
    num_images = args.num_images

    if not os.path.isdir(out_path):   # 判断是否是存在输出文件夹,如果不存在,创建一个新文件夹
        os.mkdir(out_path)

    extract_images(images_path, out_path, num_images)


if __name__ == "__main__":
    main()

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值