| from simple_lama_inpainting.models.model import SimpleLama | |
| from PIL import Image | |
| from pathlib import Path | |
| import fire | |
| def main(image_path: str, mask_path: str, out_path: str | None = None): | |
| """Apply lama inpainting using given image and mask. | |
| Args: | |
| img_path (str): Path to input image (RGB) | |
| mask_path (str): Path to input mask (Binary 1-CH Image. | |
| Pixels with value 255 will be inpainted) | |
| out_path (str, optional): Optional output imaga path. | |
| If not provided it will be saved to the same | |
| path as input image. | |
| Defaults to None. | |
| """ | |
| image_path = Path(image_path) | |
| mask_path = Path(mask_path) | |
| img = Image.open(image_path).convert("RGB") | |
| mask = Image.open(mask_path).convert("L") | |
| assert img.mode == "RGB" and mask.mode == "L" | |
| lama = SimpleLama() | |
| result = lama(img, mask) | |
| if out_path is None: | |
| out_path = image_path.with_stem(image_path.stem + "_out") | |
| Path.mkdir(Path(out_path).parent, exist_ok=True, parents=True) | |
| result.save(out_path) | |
| print(f"Inpainted image is saved to {out_path}") | |
| def lama_cli(): | |
| fire.Fire(main) | |
| if __name__ == "__main__": | |
| fire.Fire(main) | |