background-remover
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBackground Remover
背景去除工具
Remove backgrounds from images using multiple detection methods.
通过多种检测方式去除图片背景。
Features
功能特性
- Color-Based Removal: Remove solid color backgrounds
- Edge Detection: Detect subject edges for removal
- GrabCut Algorithm: Interactive foreground extraction
- Batch Processing: Process multiple images
- Transparency Output: Export with alpha channel
- Background Replacement: Replace with color or image
- 基于颜色的背景去除:移除纯色背景
- 边缘检测:识别主体边缘以去除背景
- GrabCut算法:交互式前景提取
- 批量处理:同时处理多张图片
- 透明输出:导出带Alpha通道的图片
- 背景替换:用纯色或其他图片替换背景
Quick Start
快速开始
python
from background_remover import BackgroundRemover
remover = BackgroundRemover()python
from background_remover import BackgroundRemover
remover = BackgroundRemover()Simple removal
Simple removal
remover.load("photo.jpg")
remover.remove_background()
remover.save("photo_transparent.png")
remover.load("photo.jpg")
remover.remove_background()
remover.save("photo_transparent.png")
Remove specific color
Remove specific color
remover.load("product.jpg")
remover.remove_color((255, 255, 255), tolerance=30) # Remove white
remover.save("product_clean.png")
remover.load("product.jpg")
remover.remove_color((255, 255, 255), tolerance=30) # Remove white
remover.save("product_clean.png")
Replace background
Replace background
remover.load("portrait.jpg")
remover.remove_background()
remover.replace_background(color=(0, 120, 255)) # Blue background
remover.save("portrait_blue.png")
undefinedremover.load("portrait.jpg")
remover.remove_background()
remover.replace_background(color=(0, 120, 255)) # Blue background
remover.save("portrait_blue.png")
undefinedCLI Usage
命令行工具使用方法
bash
undefinedbash
undefinedRemove background (auto-detect)
Remove background (auto-detect)
python background_remover.py --input photo.jpg --output result.png
python background_remover.py --input photo.jpg --output result.png
Remove specific color
Remove specific color
python background_remover.py --input image.jpg --color "255,255,255" --tolerance 30 -o clean.png
python background_remover.py --input image.jpg --color "255,255,255" --tolerance 30 -o clean.png
Use GrabCut method
Use GrabCut method
python background_remover.py --input photo.jpg --method grabcut -o result.png
python background_remover.py --input photo.jpg --method grabcut -o result.png
Replace background with color
Replace background with color
python background_remover.py --input photo.jpg --replace-color "0,120,255" -o result.png
python background_remover.py --input photo.jpg --replace-color "0,120,255" -o result.png
Replace background with image
Replace background with image
python background_remover.py --input photo.jpg --replace-image bg.jpg -o result.png
python background_remover.py --input photo.jpg --replace-image bg.jpg -o result.png
Batch process
Batch process
python background_remover.py --batch input_folder/ --output-dir output/ --method edge
undefinedpython background_remover.py --batch input_folder/ --output-dir output/ --method edge
undefinedAPI Reference
API参考
BackgroundRemover Class
BackgroundRemover类
python
class BackgroundRemover:
def __init__(self)
# Loading
def load(self, filepath: str) -> 'BackgroundRemover'
def load_array(self, array: np.ndarray) -> 'BackgroundRemover'
# Removal Methods
def remove_background(self, method: str = "auto") -> 'BackgroundRemover'
def remove_color(self, color: Tuple, tolerance: int = 20) -> 'BackgroundRemover'
def remove_edges(self, threshold: int = 50) -> 'BackgroundRemover'
def grabcut(self, rect: Tuple = None, iterations: int = 5) -> 'BackgroundRemover'
# Background Operations
def replace_background(self, color: Tuple = None, image: str = None) -> 'BackgroundRemover'
def add_shadow(self, offset: Tuple = (5, 5), blur: int = 10) -> 'BackgroundRemover'
# Refinement
def refine_edges(self, feather: int = 2) -> 'BackgroundRemover'
def expand_mask(self, pixels: int = 2) -> 'BackgroundRemover'
def contract_mask(self, pixels: int = 2) -> 'BackgroundRemover'
# Output
def save(self, filepath: str, quality: int = 95) -> str
def get_image(self) -> Image
def get_mask(self) -> Image
# Batch Processing
def batch_process(self, input_dir: str, output_dir: str,
method: str = "auto") -> List[str]python
class BackgroundRemover:
def __init__(self)
# Loading
def load(self, filepath: str) -> 'BackgroundRemover'
def load_array(self, array: np.ndarray) -> 'BackgroundRemover'
# Removal Methods
def remove_background(self, method: str = "auto") -> 'BackgroundRemover'
def remove_color(self, color: Tuple, tolerance: int = 20) -> 'BackgroundRemover'
def remove_edges(self, threshold: int = 50) -> 'BackgroundRemover'
def grabcut(self, rect: Tuple = None, iterations: int = 5) -> 'BackgroundRemover'
# Background Operations
def replace_background(self, color: Tuple = None, image: str = None) -> 'BackgroundRemover'
def add_shadow(self, offset: Tuple = (5, 5), blur: int = 10) -> 'BackgroundRemover'
# Refinement
def refine_edges(self, feather: int = 2) -> 'BackgroundRemover'
def expand_mask(self, pixels: int = 2) -> 'BackgroundRemover'
def contract_mask(self, pixels: int = 2) -> 'BackgroundRemover'
# Output
def save(self, filepath: str, quality: int = 95) -> str
def get_image(self) -> Image
def get_mask(self) -> Image
# Batch Processing
def batch_process(self, input_dir: str, output_dir: str,
method: str = "auto") -> List[str]Removal Methods
背景去除方式
Auto Detection
自动检测
python
undefinedpython
undefinedAutomatically choose best method
Automatically choose best method
remover.remove_background(method="auto")
undefinedremover.remove_background(method="auto")
undefinedColor-Based Removal
基于颜色的背景去除
python
undefinedpython
undefinedRemove white background
Remove white background
remover.remove_color((255, 255, 255), tolerance=30)
remover.remove_color((255, 255, 255), tolerance=30)
Remove green screen
Remove green screen
remover.remove_color((0, 255, 0), tolerance=50)
remover.remove_color((0, 255, 0), tolerance=50)
Remove any solid color
Remove any solid color
remover.remove_color((200, 200, 200), tolerance=40)
undefinedremover.remove_color((200, 200, 200), tolerance=40)
undefinedEdge Detection
边缘检测
python
undefinedpython
undefinedUse edge detection to find subject
Use edge detection to find subject
remover.remove_edges(threshold=50)
undefinedremover.remove_edges(threshold=50)
undefinedGrabCut (OpenCV)
GrabCut (OpenCV)
python
undefinedpython
undefinedFull image GrabCut
Full image GrabCut
remover.grabcut(iterations=5)
remover.grabcut(iterations=5)
With bounding rectangle hint
With bounding rectangle hint
remover.grabcut(rect=(50, 50, 400, 300), iterations=10)
undefinedremover.grabcut(rect=(50, 50, 400, 300), iterations=10)
undefinedBackground Replacement
背景替换
Solid Color
纯色背景
python
remover.remove_background()
remover.replace_background(color=(255, 255, 255)) # White
remover.replace_background(color=(0, 0, 0)) # Black
remover.replace_background(color=(135, 206, 235)) # Sky bluepython
remover.remove_background()
remover.replace_background(color=(255, 255, 255)) # White
remover.replace_background(color=(0, 0, 0)) # Black
remover.replace_background(color=(135, 206, 235)) # Sky blueImage Background
图片背景
python
remover.remove_background()
remover.replace_background(image="office_bg.jpg")python
remover.remove_background()
remover.replace_background(image="office_bg.jpg")Transparent (Default)
透明背景(默认)
python
remover.remove_background()
remover.save("transparent.png") # PNG preserves alphapython
remover.remove_background()
remover.save("transparent.png") # PNG preserves alphaEdge Refinement
边缘细化处理
python
undefinedpython
undefinedSoften edges with feathering
Soften edges with feathering
remover.refine_edges(feather=3)
remover.refine_edges(feather=3)
Expand mask to include more area
Expand mask to include more area
remover.expand_mask(pixels=2)
remover.expand_mask(pixels=2)
Contract mask for tighter crop
Contract mask for tighter crop
remover.contract_mask(pixels=2)
undefinedremover.contract_mask(pixels=2)
undefinedExample Workflows
示例工作流
Product Photography
产品摄影处理
python
remover = BackgroundRemover()python
remover = BackgroundRemover()Remove white studio background
Remove white studio background
remover.load("product_photo.jpg")
remover.remove_color((255, 255, 255), tolerance=25)
remover.refine_edges(feather=2)
remover.save("product_transparent.png")
undefinedremover.load("product_photo.jpg")
remover.remove_color((255, 255, 255), tolerance=25)
remover.refine_edges(feather=2)
remover.save("product_transparent.png")
undefinedPortrait Editing
人像照片编辑
python
remover = BackgroundRemover()python
remover = BackgroundRemover()Remove background from portrait
Remove background from portrait
remover.load("portrait.jpg")
remover.grabcut(iterations=8)
remover.refine_edges(feather=3)
remover.load("portrait.jpg")
remover.grabcut(iterations=8)
remover.refine_edges(feather=3)
Add professional background
Add professional background
remover.replace_background(color=(220, 220, 220))
remover.add_shadow(offset=(5, 5), blur=15)
remover.save("portrait_professional.jpg")
undefinedremover.replace_background(color=(220, 220, 220))
remover.add_shadow(offset=(5, 5), blur=15)
remover.save("portrait_professional.jpg")
undefinedGreen Screen Removal
绿幕背景去除
python
remover = BackgroundRemover()
remover.load("greenscreen_video_frame.jpg")
remover.remove_color((0, 255, 0), tolerance=60)
remover.replace_background(image="virtual_bg.jpg")
remover.save("composited.jpg")python
remover = BackgroundRemover()
remover.load("greenscreen_video_frame.jpg")
remover.remove_color((0, 255, 0), tolerance=60)
remover.replace_background(image="virtual_bg.jpg")
remover.save("composited.jpg")Batch Processing
批量处理
python
remover = BackgroundRemover()
processed = remover.batch_process(
input_dir="product_photos/",
output_dir="processed/",
method="color",
color=(255, 255, 255),
tolerance=30
)
print(f"Processed {len(processed)} images")python
remover = BackgroundRemover()
processed = remover.batch_process(
input_dir="product_photos/",
output_dir="processed/",
method="color",
color=(255, 255, 255),
tolerance=30
)
print(f"Processed {len(processed)} images")Output Formats
输出格式
- PNG: Preserves transparency (recommended)
- WEBP: Smaller file, supports alpha
- JPEG: No transparency (use with replace_background)
- PNG:保留透明通道(推荐格式)
- WEBP:文件体积更小,支持透明通道
- JPEG:不支持透明通道(需配合背景替换功能使用)
Tips for Best Results
最佳使用技巧
- White/Solid Backgrounds: Use method
remove_color() - Complex Backgrounds: Use method
grabcut() - High Contrast Subjects: Edge detection works well
- Portraits: GrabCut with edge refinement
- Product Photos: Color removal with feathering
- 白色/纯色背景:使用方法
remove_color() - 复杂背景:使用方法
grabcut() - 高对比度主体:边缘检测方法效果更佳
- 人像照片:使用GrabCut配合边缘细化处理
- 产品照片:基于颜色的去除方式配合边缘羽化处理
Limitations
局限性
- Best results with high contrast between subject and background
- Complex hair/fur edges may need manual touch-up
- Transparent or semi-transparent subjects are challenging
- Very busy backgrounds may require manual assistance
- 在主体与背景对比度高的场景下效果最佳
- 复杂的毛发/绒毛边缘可能需要手动修正
- 透明或半透明主体的处理难度较大
- 过于杂乱的背景可能需要人工辅助
Dependencies
依赖库
- pillow>=10.0.0
- opencv-python>=4.8.0
- numpy>=1.24.0
- scikit-image>=0.21.0
- pillow>=10.0.0
- opencv-python>=4.8.0
- numpy>=1.24.0
- scikit-image>=0.21.0