Rembgで画像から背景を削除


press
Rembgで画像から背景を削除

Rembgで画像から背景を削除

先日、SNSで見た画像の背景を削除して切り抜くPythonのライブラリを見つけたので早速試してみました。普段業務で画像の背景を処理することも多くソフトを使って背景を削除していたので、Pythonで背景を削除できたら自動化できそうだなと思いました。

試しに今回はルービックキューブと泡盛の瓶の背景を削除してみましたが、Photoshopなどの画像編集ソフトを使って背景を削除したのと変わらない(言われても分からない)クオリティで背景を削除できました。実行時間も一枚あたり数秒で完了するので、大量の画像を処理するときはソフトを使うよりもこのライブラリを使ったほうが大幅に時間短縮が可能です。

GitHubにあるサンプルコードは画像を指定して一度に一枚しか背景処理ができませんが、変更を加えてフォルダ内の全画像をまとめて背景を削除できるようにしました。その際に進捗が分かるようにtqdmで処理の進捗を表示させています。

ルービックキューブの背景処理

ルービックキューブ
ルービックキューブ(背景処理)

波照間島の幻の泡盛「泡波」の背景処理

泡波
泡波(背景処理)

開発環境

PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.0.1
Python: 3.9.1

背景削除のコード

import glob

from tqdm import tqdm
from rembg import remove
from PIL import Image

ORIGINAL_DIR = "original/"
OUTPUT_DIR = "convert/"

lst = glob.glob(ORIGINAL_DIR + "*")
for i, l in enumerate(tqdm(lst)):
    input = Image.open(l)
    output = remove(input)
    output.save(OUTPUT_DIR + l.split('/')[1])

解説

import glob
from tqdm import tqdm
from rembg import remove
from PIL import Image
ライブラリをインポート

ORIGINAL_DIR = "original/"
OUTPUT_DIR = "convert/"
背景を切り抜く画像を入れるフォルダと切り抜いた画像を保存するディレクトリ名を指定

lst = glob.glob(ORIGINAL_DIR + "*")
背景を切り抜く画像を取得(*でORIGINAL_DIR内の全ファイルを指定)

for i, l in enumerate(tqdm(lst)):
リストで取得した全データを一件づつ処理
tqdmで処理の進捗を表示

input = Image.open(l)
画像を開く

output = remove(input)
画像の背景を削除

output.save(OUTPUT_DIR + l.split('/')[1])
背景を削除した画像を保存(splitで/の後の画像名を保存する画像名に指定)


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    Django

    ダウンロードするファイルの文字コードを動的に変更

    ダウンロードするファイルの文字コードを動的に変更 ウェブアプリケーションの中でCSVやテキストファイルをダウンロードさせた時に文字化けが発生する事があります。使用する文字コードが決まっていれば予め固定してしまう事で文字化 […]

    Posted on by press
    Python

    rembgで背景を削除した画像を編集して元の画像と再合成

    rembgで背景を削除した画像を編集して元の画像と再合成 YouTubeにアップロードしたrembgで背景を削除する説明動画にコメントをいただいたので、rembgを使った画像処理の続編です。rembgで背景を削除した画像 […]

    Posted on by press

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません