diff options
Diffstat (limited to 'megapixels/commands/cv/mirror.py')
| -rw-r--r-- | megapixels/commands/cv/mirror.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/megapixels/commands/cv/mirror.py b/megapixels/commands/cv/mirror.py new file mode 100644 index 00000000..9ca1cac7 --- /dev/null +++ b/megapixels/commands/cv/mirror.py @@ -0,0 +1,57 @@ +""" +Crop images to prepare for training +""" + +import click +import cv2 as cv +from PIL import Image, ImageOps, ImageFilter + +from app.settings import types +from app.utils import click_utils +from app.settings import app_cfg as cfg + + +@click.command() +@click.option('-i', '--input', 'opt_dir_in', required=True, + help='Input directory') +@click.option('-o', '--output', 'opt_dir_out', required=True, + help='Output directory') +@click.option('--slice', 'opt_slice', type=(int, int), default=(None, None), + help='Slice the input list') +@click.pass_context +def cli(ctx, opt_dir_in, opt_dir_out, opt_slice): + """Mirror augment image directory""" + + import os + from os.path import join + from pathlib import Path + from glob import glob + from tqdm import tqdm + + from app.utils import logger_utils, file_utils, im_utils + + # ------------------------------------------------- + # init + + log = logger_utils.Logger.getLogger() + + # ------------------------------------------------- + # process here + + # get list of files to process + fp_ims = glob(join(opt_dir_in, '*.jpg')) + fp_ims += glob(join(opt_dir_in, '*.png')) + + if opt_slice: + fp_ims = fp_ims[opt_slice[0]:opt_slice[1]] + log.info('processing {:,} files'.format(len(fp_ims))) + + # ensure output dir exists + file_utils.mkdirs(opt_dir_out) + + # resize and save images + for fp_im in tqdm(fp_ims): + im = Image.open(fp_im) + fpp_im = Path(fp_im) + fp_out = join(opt_dir_out, '{}_mirror{}'.format(fpp_im.stem, fpp_im.suffix)) + im.save(fp_out)
\ No newline at end of file |
