|
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) |
|
|