はじめに
こちらを使わせていただきました。github.com
環境構築
GitHubに書いてある通りにやりましたが、最初はなかなかうまくいきませんでした。ハマりポイントを挙げておきます。- opencv-python==4.5.3.56を指定されているのでPythonは3.9以下にする必要があります
- 次のようなエラーが出たため、Gradio==3.41.2にダウングレードしました
AttributeError: 'Row' object has no attribute 'style'
- opencv-python-headless==4.9.0.80をアンインストールする必要がありました
AttributeError: partially initialized module 'cv2' has no attribute '_registerMatType' (most likely due to a circular import)
- さらにその後にopencv-python==4.5.3.56を再インストールする必要がありました
AttributeError: module 'cv2' has no attribute '__version__'
結果
元画像
作成された画像
人物を切り抜いて他の背景画像に貼り付けただけですが、切り抜きの精度が高いため違和感が全くありません。
(注)正確には切り抜き、貼り付けではなく、「alpha blending」です。
alpha blendingの方法
import cv2 import numpy as np original = cv2.imread("woman.png")/255 bg = cv2.imread("bg.png")/255 alpha = cv2.imread("matte.png")/255 new_image = original * alpha + bg * (1 - alpha) result = (new_image * 255).astype(np.uint8) cv2.imwrite("result.png", result)
環境
Ubuntu 22.04 on WSL2 CUDA 11.8 Python 3.9
補足①
Ubuntu 22.04にPython3.9をインストールする方法です。sudo apt install software-properties-common -y sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update sudo apt install python3.9 python3.9-dev python3.9-venv