MakiAi's picture
Upload 84 files
ad8cacf verified
"""
Batch processing functionality for background removal.
"""
import os
from .simple import remove_background_simple
from .advanced import remove_background_advanced
def batch_remove_background(input_dir, output_dir=None, method='simple', threshold=240, iterations=5):
"""
Remove background from all images in a directory.
Args:
input_dir (str): Input directory containing images
output_dir (str, optional): Output directory for processed images
method (str): Background removal method ('simple' or 'advanced')
threshold (int): Threshold for simple method
iterations (int): Iterations for advanced method
Returns:
list: Paths to processed images
"""
# Create output directory if not specified
if output_dir is None:
output_dir = os.path.join(input_dir, 'nobg')
# Create output directory if it doesn't exist
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"Created output directory: {output_dir}")
# List for processed image paths
processed_paths = []
# Process each image in directory
for filename in os.listdir(input_dir):
if not filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
continue
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, f"{os.path.splitext(filename)[0]}_nobg.png")
# Apply background removal
if method.lower() == 'simple':
result_path = remove_background_simple(input_path, output_path, threshold)
else:
result_path = remove_background_advanced(input_path, output_path, iterations)
if result_path:
processed_paths.append(result_path)
print(f"Processed {len(processed_paths)} images")
return processed_paths