【Python3】Rembgを使用して画像から背景を除去する方法
おはこんばんにちは、せなです。
今回は、Rembgを使用して画像から背景を除去する方法を説明します。
Rembgのインストール
Rembgは、画像から背景を除去することができるライブラリです。
以下のコマンドで、Rembgをインストールできます。
pip install rembg
インストールが完了したら、以下のコマンドを実行してみましょう。
rembg -i input.png -o output.png
RembgはCLIでも使えるので、コマンドラインから実行することができます。
このコマンドは、input.pngという画像から背景を除去して、output.pngという画像を出力します。
実際に入力した画像と出力結果は以下のようになりました。
下の草が残ってしまいましたが、背景は綺麗に消えていますね。
ソースコード
Pythonのソースコードは以下のようになります。
from rembg import remove
def main(input_path, output_path):
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
input = i.read()
output = remove(input)
o.write(output)
if __name__ == '__main__':
input_path = 'input.png'
output_path = 'output.png'
main(input_path, output_path)
上記では、open関数を使用していますが、cv2やPILなどの画像処理ライブラリを使用しても問題ありません。
以下は、cv2とPILを使用したサンプルコードです。
from rembg import remove
import cv2
def main(input_path, output_path):
input = cv2.imread(input_path)
output = remove(input)
cv2.imwrite(output_path, output)
if __name__ == '__main__':
input_path = 'input.png'
output_path = 'output.png'
main(input_path, output_path)
from rembg import remove
from PIL import Image
def main(input_path, output_path):
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
if __name__ == '__main__':
input_path = 'input.png'
output_path = 'output.png'
main(input_path, output_path)
まとめ
Rembgは中々便利なライブラリですね。
私のMac(M1)では、768×1024の画像を処理するのに約1秒かかりました。
リアルタイムでの使用は難しいかもですが、時間を問わない画像処理を使用する際には使用してみるのは良さそうですね。
ではでは〜
ディスカッション
コメント一覧
まだ、コメントがありません