From e990582cbd4a09721eb8a151bd4427c26c8db088 Mon Sep 17 00:00:00 2001 From: Gosia Date: Tue, 19 Dec 2023 09:35:45 +0100 Subject: [PATCH] BLUR-37: Add simple method of blurring. --- ...oxes_to_image.py => image_modification.py} | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) rename graphics/{add_boxes_to_image.py => image_modification.py} (50%) diff --git a/graphics/add_boxes_to_image.py b/graphics/image_modification.py similarity index 50% rename from graphics/add_boxes_to_image.py rename to graphics/image_modification.py index e8b3eec..6a42757 100644 --- a/graphics/add_boxes_to_image.py +++ b/graphics/image_modification.py @@ -2,7 +2,7 @@ import os from typing import List -from PIL import Image, ImageDraw, ImageFont +from PIL import Image, ImageDraw, ImageFont, ImageFilter from BlurMe.ml.element_detection import BoundBox @@ -18,9 +18,25 @@ def show_image_with_boxes( font = ImageFont.truetype(font_path, 25) for i, box in enumerate(bounding_boxes): draw.rectangle(box.get_params(), outline="red", width=2, fill=None) - draw.text((box.x1 + 5, box.y1 + 5), str(i+1), fill="red", font=font) + draw.text((box.x1 + 5, box.y1 + 5), str(i + 1), fill="red", font=font) if not out_image_path: out_image_path = ( in_image_path.split(".")[0] + "_out." + in_image_path.split(".")[1] ) img.save(out_image_path) + + +def blur_image_with_boxes( + in_image_path: str, bounding_boxes: List[BoundBox], out_image_path: str = None +): + img = Image.open(in_image_path) + for box in bounding_boxes: + if box.selected: + cropped = img.crop(box.get_params()) + blurred = cropped.filter(ImageFilter.GaussianBlur(radius=10)) + img.paste(blurred, box.get_params()) + if not out_image_path: + out_image_path = ( + in_image_path.split(".")[0] + "_blurred." + in_image_path.split(".")[1] + ) + img.save(out_image_path)