image-cleanup / main.py
kuko6's picture
Improved image cleaning
eab7c24
Raw
History Blame Contribute Delete
1.49 kB
import argparse
from pathlib import Path
import cv2
from cleaning import (
clean_display_image_and_mask,
cleaned_image_name,
read_image_rgb_and_preview,
write_image_rgb,
)
def main(
image_paths: list[str],
output_dir: str | Path = "out",
) -> None:
output_dir = Path(output_dir)
cleaned_dir = output_dir / "cleaned"
masks_dir = output_dir / "masks"
cleaned_dir.mkdir(parents=True, exist_ok=True)
masks_dir.mkdir(parents=True, exist_ok=True)
for image_path_string in image_paths:
image_path = Path(image_path_string)
image_rgb, display_rgb = read_image_rgb_and_preview(image_path)
cleaned_rgb, debris_mask = clean_display_image_and_mask(
image_rgb,
display_rgb,
)
cv2.imwrite(str(masks_dir / f"{image_path.stem}_mask.png"), debris_mask)
cleaned_path = cleaned_dir / cleaned_image_name(image_path)
write_image_rgb(cleaned_path, cleaned_rgb)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Clean debris from IHC images.")
parser.add_argument(
"images",
nargs="+",
help="Paths to one or more input images.",
)
parser.add_argument(
"--output-dir",
default="out",
help="Directory for cleaned images and masks (default: out).",
)
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
main(args.images, args.output_dir)