Stanislav
feat: pre-ready, switch to hf
aa1c1e5
raw
history blame contribute delete
869 Bytes
import cv2
import numpy as np
from PIL import Image
def save_mask_as_png(image, mask, path):
"""
Save the masked region of the image as a transparent PNG.
:param image: Original BGR image (NumPy array)
:param mask: 2D NumPy boolean array (True = object region)
:param path: Output file path (.png)
"""
# Step 1: Apply the mask to the image (set background to black)
bgr = image.copy()
bgr[~mask] = 0
# Step 2: Create alpha channel (0 = transparent, 255 = opaque)
alpha = np.where(mask, 255, 0).astype(np.uint8)
# Step 3: Merge BGR + Alpha → BGRA
bgra = cv2.merge((*cv2.split(bgr), alpha))
# Step 4: Convert BGRA → RGBA for proper color rendering in PIL
rgba = cv2.cvtColor(bgra, cv2.COLOR_BGRA2RGBA)
# Step 5: Save the image with transparency using Pillow
Image.fromarray(rgba).save(path)