MakiAi's picture
Upload 84 files
ad8cacf verified
"""
Simple threshold-based background removal functionality.
"""
import cv2
import numpy as np
import os
def remove_background_simple(image_path, output_path=None, threshold=240):
"""
Remove background using simple threshold-based method.
Args:
image_path (str): Path to input image
output_path (str, optional): Path for output image. If None, generates new path
threshold (int): Threshold value for background detection (0-255)
Returns:
str: Path to processed image
"""
# Load image
img = cv2.imread(image_path)
if img is None:
print(f"Error: Could not load image: {image_path}")
return None
# Convert to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Threshold to separate background
_, mask = cv2.threshold(gray, threshold, 255, cv2.THRESH_BINARY_INV)
# Create alpha channel
alpha = np.zeros_like(gray)
alpha[mask > 0] = 255
# Create BGRA image
bgra = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
bgra[:, :, 3] = alpha
# Generate output path if not specified
if output_path is None:
filename, ext = os.path.splitext(image_path)
output_path = f"{filename}_nobg.png"
# Save image
cv2.imwrite(output_path, bgra)
print(f"Saved background-removed image: {output_path}")
return output_path