所以我尝试使用python的argparse从一个目录中获取图像,修改它们并将它们存储在一个新的目录中,但是我遇到了麻烦。
例如,假设我有一个名为classes的目录,其中有50个不同的类,每个类都有100个不同的图像。
classes > {A(50), B(50), ...N(50)}然后,我应该对这些图像进行一些处理,并将它们保存到一个新的不同目录classes_2中
classes2 > {A'(200), B'(200),...N'(200)}我希望能够指定一些东西
python filename.py --input classes/A --dest classes_2/A'我如何使用argparse来做到这一点。此外,我使用的是scipy imsave,但是每次我都必须更改代码中的路径。
编辑:
好的,谢谢你@nosklo,现在我遇到的问题是我正在使用image库进行图像增强,我的代码是这样的:
假设我有了所需的所有导入,cv2、imgaug、argparse、os、sys等。
parser = argparse.ArgumentParser()
parser.add_argument('--input', help = 'input directory', required = True)
parser.add_argument('--dest', help = 'destination directory', required = True)
args = ap.parse_args()
for filename in files:
images = []
image = cv.imread(filename)
image_rgb = cv.cvtColor(image, cv.COLOR_BRG2RGB)
images.append(image_rgb)
#imgaug built-in functions
seq = iaa.Sequential([ ... ])
num_augs_per_image = 10
# save images in format 001_07
# where 001 is the second image in your original data set
# and 07 is the 8th version of the 2nd image
for i, image in enumerate(images):
image_augs = seq.augment_images([image] * n_augs_per_image)
for j, image_aug in enumerate(image_augs):
result = os.path.join(args.dest, "%03d_%02d.jpg" % (i, j))
with open(result, 'wb') as f:
f.write(image_aug)最后一部分我也试过了:
for i, image in enumerate(images):
image_augs = seq.augment_images([image] * n_augs_per_image)
for j, image_aug in enumerate(image_augs):
misc.imsave(os.path.join("%03d_%02d.jpg" % (i, j)), image_aug)但是,当我调用文件python - filename.py /path/classes/A --dest /path/classes/B时,我没有得到保存在新目录中的任何图像。
例如,如果我在目录A中有5个图像,我希望在目录B中有50个图像,因为我已经将每个图像增加了10次,并且希望保存原始图像的所有版本。
发布于 2018-08-04 01:15:54
我将帮助您完成argparse部分,这样您就可以专注于您必须对图像执行的“某些操作”:
import os
import argparse
parser = argparse.ArgumentParser(description='Process some images')
parser.add_argument('--input', help='the input directory', required=True)
parser.add_argument('--dest', help='the destination', required=True)
args = parser.parse_args()
for path, dirs, files in os.walk(args.input):
for filename in files:
fullname = os.path.join(path, filename)
result, result_filename = do_something(fullname)
result_fullname = os.path.join(args.dest, result_filename)
with open(result_fullname, 'wb') as f:
f.write(result)这假设您的函数do_something将能够返回一个result和一个新的result_filename,用于将文件写入--dest目录-如果您想使用相同的文件名,只需使用filename变量即可。
https://stackoverflow.com/questions/51677207
复制相似问题