diff options
Diffstat (limited to 'megapixels/datasets/commands/extract.py')
| -rw-r--r-- | megapixels/datasets/commands/extract.py | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/megapixels/datasets/commands/extract.py b/megapixels/datasets/commands/extract.py deleted file mode 100644 index 4e77a978..00000000 --- a/megapixels/datasets/commands/extract.py +++ /dev/null @@ -1,86 +0,0 @@ -""" -Crop images to prepare for training -""" - -import click - -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_fp_in', required=True, - help='Input CSV') -@click.option('--media', 'opt_dir_media', required=True, - help='Input image/video directory') -@click.option('-o', '--output', 'opt_dir_out', required=True, - help='Output directory for extracted ROI images') -@click.option('--size', 'opt_size', - type=(int, int), default=(300, 300), - help='Output image size') -@click.option('--slice', 'opt_slice', type=(int, int), default=(None, None), - help='Slice list of files') -@click.option('--padding', 'opt_padding', default=0, - help='Facial padding') -@click.option('--ext', 'opt_ext_out', default='jpg', type=click.Choice(['jpg', 'png']), - help='Output image type') -@click.pass_context -def cli(ctx, opt_fp_in, opt_dir_media, opt_dir_out, opt_size, opt_slice, - opt_padding, opt_ext_out): - """Extrace ROIs to images""" - - import os - from os.path import join - from pathlib import Path - from glob import glob - - from tqdm import tqdm - import numpy as np - from PIL import Image, ImageOps, ImageFilter, ImageDraw - import cv2 as cv - import pandas as pd - - from app.utils import logger_utils, file_utils, im_utils - from app.models.bbox import BBox - # ------------------------------------------------- - # process here - log = logger_utils.Logger.getLogger() - - df_rois = pd.read_csv(opt_fp_in) - if opt_slice: - df_rois = df_rois[opt_slice[0]:opt_slice[1]] - - log.info('Processing {:,} rows'.format(len(df_rois))) - - file_utils.mkdirs(opt_dir_out) - - df_rois_grouped = df_rois.groupby(['fn']) # group by fn/filename - groups = df_rois_grouped.groups - - for group in groups: - - # get image - group_rows = df_rois_grouped.get_group(group) - - row = group_rows.iloc[0] - fp_im = join(opt_dir_media, '{fn}{ext}'.format(**row)) #TODO change to ext - im = Image.open(fp_im) - - - for idx, roi in group_rows.iterrows(): - log.info('{}'.format(roi['fn'])) - # get bbox to im dimensions - xywh = [roi['x'], roi['y'], roi['w'] , roi['h']] - bbox = BBox.from_xywh(*xywh) - dim = im.size - bbox_dim = bbox.to_dim(dim) - # expand - bbox_dim_exp = bbox_dim.expand_dim(opt_padding, dim) - # crop - x1y2 = bbox_dim_exp.pt_tl + bbox_dim_exp.pt_br - im_crop = im.crop(box=x1y2) - # save - idx_zpad = file_utils.zpad(idx, zeros=3) - fp_im_out = join(opt_dir_out, '{}_{}.{}'.format(roi['fn'], idx_zpad, opt_ext_out)) - im_crop.save(fp_im_out) - |
