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()
Python逐一读取,修改,保存文件夹中的图像文件
最新推荐文章于 2023-12-19 22:14:23 发布