mcpField
B
background-remover

background-remover

github.com/dkyazzentwatwaクリエイティブ・メディア124122 回インストール29 週間前に更新
リポジトリ

background-remover について

background-removerは、画像の背景を除去または置換する画像処理ツールです。色による除去、エッジ検出、GrabCutに対応し、バッチ処理や透明度を保つ出力も行えます。

主な機能

  1. 01色指定による背景除去
  2. 02エッジ検出とGrabCutによる抽出
  3. 03画像のバッチ処理
  4. 04透過画像の出力
  5. 05色や画像による背景置換

活用シーン

  1. 01商品写真を透過画像にする
  2. 02ポートレートの被写体を切り抜く
  3. 03グリーンバックを除去する
  4. 04画像フォルダーを一括処理する

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill background-remover

インストール後、Claude Code で/background-removerを入力して読み込まれたか確認します。

同梱ファイルscripts/background_remover.pyscripts/requirements.txt

詳細

背景除去

複数の検出方法を使用して、画像から背景を除去します。

特長

  • 色ベースの除去:単色の背景を除去します
  • エッジ検出:被写体のエッジを検出して除去します
  • GrabCut アルゴリズム:前景を対話的に抽出します
  • バッチ処理:複数の画像を処理します
  • 透過出力:アルファチャンネル付きでエクスポートします
  • 背景の置換:色または画像に置き換えます

クイックスタート

from background_remover import BackgroundRemover

remover = BackgroundRemover()

# Simple removal
remover.load("photo.jpg")
remover.remove_background()
remover.save("photo_transparent.png")

# Remove specific color
remover.load("product.jpg")
remover.remove_color((255, 255, 255), tolerance=30)  # Remove white
remover.save("product_clean.png")

# Replace background
remover.load("portrait.jpg")
remover.remove_background()
remover.replace_background(color=(0, 120, 255))  # Blue background
remover.save("portrait_blue.png")

CLI の使用方法

# Remove background (auto-detect)
python background_remover.py --input photo.jpg --output result.png

# Remove specific color
python background_remover.py --input image.jpg --color "255,255,255" --tolerance 30 -o clean.png

# Use GrabCut method
python background_remover.py --input photo.jpg --method grabcut -o result.png

# Replace background with color
python background_remover.py --input photo.jpg --replace-color "0,120,255" -o result.png

# Replace background with image
python background_remover.py --input photo.jpg --replace-image bg.jpg -o result.png

# Batch process
python background_remover.py --batch input_folder/ --output-dir output/ --method edge

API リファレンス

BackgroundRemover クラス
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]

除去方法

自動検出
# Automatically choose best method
remover.remove_background(method="auto")
色ベースの除去
# Remove white background
remover.remove_color((255, 255, 255), tolerance=30)

# Remove green screen
remover.remove_color((0, 255, 0), tolerance=50)

# Remove any solid color
remover.remove_color((200, 200, 200), tolerance=40)
エッジ検出
# Use edge detection to find subject
remover.remove_edges(threshold=50)
GrabCut(OpenCV)
# Full image GrabCut
remover.grabcut(iterations=5)

# With bounding rectangle hint
remover.grabcut(rect=(50, 50, 400, 300), iterations=10)

背景の置換

単色
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 blue
背景画像
remover.remove_background()
remover.replace_background(image="office_bg.jpg")
透過(デフォルト)
remover.remove_background()
remover.save("transparent.png")  # PNG preserves alpha

エッジの調整

# Soften edges with feathering
remover.refine_edges(feather=3)

# Expand mask to include more area
remover.expand_mask(pixels=2)

# Contract mask for tighter crop
remover.contract_mask(pixels=2)

ワークフローの例

商品写真
remover = BackgroundRemover()

# 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")
ポートレートの編集
remover = BackgroundRemover()

# Remove background from portrait
remover.load("portrait.jpg")
remover.grabcut(iterations=8)
remover.refine_edges(feather=3)

# Add professional background
remover.replace_background(color=(220, 220, 220))
remover.add_shadow(offset=(5, 5), blur=15)
remover.save("portrait_professional.jpg")
グリーンスクリーンの除去
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")
バッチ処理
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")

出力形式

  • PNG:透過を保持します(推奨)
  • WEBP:ファイルサイズが小さく、アルファチャンネルをサポートします
  • JPEG:透過に対応しません(replace_background と併用してください)

最良の結果を得るためのヒント

  1. 白または単色の背景:remove_color() メソッドを使用します
  2. 複雑な背景:grabcut() メソッドを使用します
  3. コントラストの高い被写体:エッジ検出が効果的です
  4. ポートレート:エッジ調整を併用して GrabCut を使用します
  5. 商品写真:フェザリングを併用して色を除去します

制限事項

  • 被写体と背景のコントラストが高い場合に、最良の結果が得られます
  • 髪や毛皮などの複雑なエッジは、手動での修正が必要になる場合があります
  • 透過または半透過の被写体は処理が困難です
  • 非常に複雑な背景では、手動での補助が必要になる場合があります

依存関係

  • pillow>=10.0.0
  • opencv-python>=4.8.0
  • numpy>=1.24.0
  • scikit-image>=0.21.0

コメント