rembgで背景を削除した画像を編集して元の画像と再合成
rembgで背景を削除した画像を編集して元の画像と再合成 YouTubeにアップロードしたrembgで背景を削除する説明動画にコメントをいただいたので、rembgを使った画像処理の続編です。rembgで背景を削除した画像 […]
Filter by Category
rembgで背景を削除した画像を編集して元の画像と再合成 YouTubeにアップロードしたrembgで背景を削除する説明動画にコメントをいただいたので、rembgを使った画像処理の続編です。rembgで背景を削除した画像 […]
Rembgで画像から背景を削除 先日、SNSで見た画像の背景を削除して切り抜くPythonのライブラリを見つけたので早速試してみました。普段業務で画像の背景を処理することも多くソフトを使って背景を削除していたので、Pyt […]
競艇で実装した戦略を紹介します。 1着率を正規化 まず試したのはそれぞれの選手の1着率を全試合から計算してそれをその試合ごとに正規化する方法です。 期待値はオッズと確率の積で表せるので、確率を計算することで相対的にどの券 […]
MacにGoProをウェブカメラとして認識させてOpenCVで使う MacとGoProを繋ぎ、GoProをウェブカメラとして認識させてOpenCVに映像を入力します。今回は映像を取り込んで画面に表示するだけですが、Pyt […]
Raspberry PiにInsightFaceをインストールできなかった 顔検出や顔認証、属性判定ができるInsightFaceというライブラリを使ってRaspberry Piで属性判定に挑戦しましたが、結果的にRas […]
WindowsでPythonの仮想環境を構築 Pythonで開発するときはMac版のPyCharmを使用しているので仮想環境も自動でPyCharmが構築してくれるのですが、Apple SiliconのMacでは動かないラ […]
AWSで追加したユーザのMFAに1Passwordを設定 AWSのコンソールにログインする際にMFA(Multi-Factor Authentication)という多要素認証を設定することで、メールアドレスとパスワードに […]
iPhoneで撮影した写真をPythonでpngに変換 iPhoneで撮影した写真はHEICという拡張子で保存されます。この画像を利用したり編集したりするにはpngなどの形式に変換が必要なので画像が大量にある場合は1枚1 […]
Appleシリコン搭載MacのDocker環境でTensorflowを使う Intel搭載のMacで作成したTensorflowを使ったプロジェクトを移して、M1やM2などのAppleシリコンを搭載しているMacでTen […]
PythonでYouTubeの動画をダウンロード YouTubeの動画をPythonでダウンロードします。今回使うyt-dlpはyoutube-dlのフォークで、youtube-dlよりもダウンロード速度が高速です。Py […]
Pythonでjpgやpng画像をwebpに一括変換 ウェブサイトで使用される画像に画質を保ったまま軽量化できるWebサイト向けの次世代画像フォーマットのwebpを利用するケースが増えていますが、サイト内で使われている画 […]
Apple silicon Macでmxnetを使えるようになるまで エラーが発生したのでpip install mxnet-mkl/mxnet-cu90mkl --preしたところ以下のエラーが発生 エラーの中に上の内 […]
Gitで別のブランチから特定のファイルorディレクトリをチェックアウト 複数人での開発や細かくブランチを作って開発していると、別ブランチの一部分だけを今のブランチに取り込みたいということがあります。マージだと取り込みたく […]
次のようなサッカーコートの白線の部分を線分としてを抽出したい。 まず考えたのは、緑色か否かで判定して白黒画像にすることだ。白黒画像にすることで、線をより明確に可視化させることができ、その後エッジだけ抽出して線分判定をすれ […]
pyenvでインストールしたPythonのバージョンを更新する pyenvで最新のPythonをインストールしようとしたところ、pyenvのバージョンが古く最新のバージョンがリストになかったので、pyenvをアップデート […]
DockerとDjangoでマイグレーションコマンドを実行するとエラーになる Docker環境で構築したDjangoプロジェクトでマイグレーションコマンドを実行した際に、docker-compose.ymlとsettin […]
GitHubのイシューとPyCharmのタスクを連携 GitHubのイシューとPyCharmのタスクを連携させて、GitHubのイシューをPyCharmに表示させる設定方法です。画面を切り替えなくても追加されたGitHu […]
https://shuhoyo.hatenablog.com/entry/nogizaka46-lyrics-nlp 上記サイトを参考にBERT+UMAPを実装してみた。 BERTとは BERTとは自然言語処理の1手法の […]
DjangoでPOSTとGETを組み合わせたパラメータでリダイレクト DjangoでPOSTを使ったリダイレクトはよく事例が見つかりますが、POSTとGETを組み合わせたURLにリダイレクトさせる情報があまりなかったので […]
WordCloudとは 文章に頻出する単語を抽出して画像に出力するシステムのこと。 実装について 形態素分析 まず形態素分析する必要がある。最新の形態素分析はJUMAN++なのでそれを導入すべし。 インストールするのは簡 […]
YouTubeにアップロードしたrembgで背景を削除する説明動画にコメントをいただいたので、rembgを使った画像処理の続編です。rembgで背景を削除した画像をOpenCVとPillowを使って白黒画像に変換して元の画像と再合成します。
rembgで背景を削除した画像からマスクを作成します。次にオリジナル画像を白黒に変換します。最後に白黒画像に変換した画像をマスク処理(切り抜き)して元の背景と合成します。
白黒画像に変換する部分を左右反転や色調補正などの他の処理に書き換えると表現の幅が広がります。
コードはGitHubリポジトリにあげています。
PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.0.1
Python: 3.9.1
from rembg import remove
from PIL import Image
import cv2
original_img_path = "images/IMG_5358.png"
input = Image.open(original_img_path)
output = remove(input)
output.save("combine/remove_bg.png")
mask_img_path = "combine/remove-bg.png"
mask_a = cv2.imread(mask_img_path, cv2.IMREAD_UNCHANGED)
mask_a = mask_a[:, :, 3]
cv2.imwrite("combine/mask.png", mask_a)
gray_img = cv2.imread(original_img_path)
gray_img = cv2.cvtColor(gray_img, cv2.COLOR_BGR2GRAY)
gray_img = cv2.cvtColor(gray_img, cv2.COLOR_GRAY2BGR)
cv2.imwrite("combine/gray.png", gray_img)
gray_img_path = "images/gray.png"
mask_path = "images/mask.png"
paste_img = Image.open(gray_img_path)
base_img = Image.open(original_img_path)
mask = Image.open(mask_path)
im = Image.composite(paste_img, base_img, mask)
im.save("combine/composite.png")
from rembg import remove
from PIL import Image
import cv2
ライブラリのインポート
original_img_path = "images/IMG_5358.png"
オリジナル画像のパスを指定
input = Image.open(original_img_path)
画像を開くoutput = remove(input)
rembgで背景を削除output.save("combine/remove_bg.png")
画像を保存
mask_img_path = "combine/remove-bg.png"
背景を削除した画像のパスを指定mask_a = cv2.imread(mask_img_path, cv2.IMREAD_UNCHANGED)
画像を開くmask_a = mask_a[:, :, 3]
アルファチャンネルを取得cv2.imwrite("combine/mask.png", mask_a)
画像を保存
gray_img = cv2.imread(original_img_path)
白黒画像に変換するオリジナル画像のパスを指定gray_img = cv2.cvtColor(gray_img, cv2.COLOR_BGR2GRAY)
白黒画像(グレースケール)に変換gray_img = cv2.cvtColor(gray_img, cv2.COLOR_GRAY2BGR)
グレースケールの画像をBGRに戻すcv2.imwrite("combine/gray.png", gray_img)
画像を保存
gray_img_path = "images/gray.png"
mask_path = "images/mask.png"
画像のパスを指定paste_img = Image.open(gray_img_path)
base_img = Image.open(original_img_path)
mask = Image.open(mask_path)
画像を開くim = Image.composite(paste_img, base_img, mask)
白黒、オリジナル画像、マスクを合成(上が白黒に変換したマスク処理したい画像、下がオリジナル画像)im.save("combine/composite.png")
画像を保存
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
メーリングリストに登録するとファントムの最新情報をお届けします
お客様のメールアドレスを共有することはありません