WompUniversity/Inpaint-Anything-no-errors
0
1import cv22import sys3import argparse4import numpy as np5from PIL import Image6from pathlib import Path7from matplotlib import pyplot as plt8from typing import Any, Dict, List9import glob10 11from utils import load_img_to_array, show_mask12 13 14def setup_args(parser):15 parser.add_argument(16 "--input_img", type=str, required=True,17 help="Path to a single input img",18 )19 parser.add_argument(20 "--input_mask_glob", type=str, required=True,21 help="Glob to input masks",22 )23 parser.add_argument(24 "--output_dir", type=str, required=True,25 help="Output path to the directory with results.",26 )27 28if __name__ == "__main__":29 """Example usage:30 python visual_mask_on_img.py \31 --input_img FA_demo/FA1_dog.png \32 --input_mask_glob "results/FA1_dog/mask*.png" \33 --output_dir results34 """35 parser = argparse.ArgumentParser()36 setup_args(parser)37 args = parser.parse_args(sys.argv[1:])38 39 img = load_img_to_array(args.input_img)40 img_stem = Path(args.input_img).stem41 42 mask_ps = sorted(glob.glob(args.input_mask_glob))43 44 out_dir = Path(args.output_dir) / img_stem45 out_dir.mkdir(parents=True, exist_ok=True)46 47 for mask_p in mask_ps:48 mask = load_img_to_array(mask_p)49 mask = mask.astype(np.uint8)50 51 # path to the results52 img_mask_p = out_dir / f"with_{Path(mask_p).name}"53 54 # save the masked image55 dpi = plt.rcParams['figure.dpi']56 height, width = img.shape[:2]57 plt.figure(figsize=(width/dpi/0.77, height/dpi/0.77))58 plt.imshow(img)59 plt.axis('off')60 show_mask(plt.gca(), mask, random_color=False)61 plt.savefig(img_mask_p, bbox_inches='tight', pad_inches=0)62 plt.close()63 