Spaces:
Runtime error
Runtime error
from PIL import Image, ImageFilter,ImageDraw | |
import numpy as np | |
from logger import rich_logger as l | |
from ultralytics import YOLO | |
import cv2 | |
import PIL.ImageOps | |
def invert_mask(mask_image: Image) -> np.ndarray: | |
"""Method to invert mask | |
Args: | |
mask_image (np.ndarray): input mask image | |
Returns: | |
np.ndarray: inverted mask image | |
""" | |
inverted_mask_image =PIL.ImageOps.invert(mask_image) | |
return inverted_mask_image | |
def extend_image(image_path, target_width, target_height, roi_scale=0.5): | |
# Open the original image | |
original_image = Image.open(image_path) | |
# Get the dimensions of the original image | |
original_width, original_height = original_image.size | |
# Calculate the scale to fit the target resolution while keeping the aspect ratio | |
scale = min(target_width / original_width, target_height / original_height) | |
# Calculate the new dimensions of the image | |
new_width = int(original_width * scale * roi_scale) | |
new_height = int(original_height * scale * roi_scale) | |
# Resize the original image with keeping the aspect ratio | |
original_image_resized = original_image.resize((new_width, new_height)) | |
# Create a new image with white background | |
extended_image = Image.new("RGB", (target_width, target_height), "white") | |
# Calculate the position to paste the resized image at the center | |
paste_x = (target_width - new_width) // 2 | |
paste_y = (target_height - new_height) // 2 | |
# Paste the resized image onto the new image | |
extended_image.paste(original_image_resized, (paste_x, paste_y)) | |
return extended_image | |