バーチャル背景適用済み動画からバーチャル背景を復元するライブラリ
- python 3.6.4
- pip 20.2.4
- OS
- macOS Catalina 10.15.7 (x86_64)
- macOS Bug Sur 11.4 (aarch64)
- Ubuntu 20.04.1 LTS / 18.04.4 LTS
- aarch64環境の場合
pip install zoomg
- x86_64環境の場合
pip install git+https://github.com/Tsuku43/zoomg
Windows では動作保証をしていません
python3 sample.py sample_video.mp4
import zoomg
import cv2
import sys
import numpy
# ビデオ読み込みの初期設定
filename = sys.argv[1]
video = cv2.VideoCapture(filename)
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# zoomgの初期化
zoom = zoomg.Zoomg(height, width)
while True:
# フレーム読み込み
ret, frame = video.read()
if not ret:
break
# zoomgに画像を追加
zoom.add_image(frame)
# 背景画像を生成
zoom.generate_image()
# 背景画像を取得
image = zoom.get_image()
# 背景画像を保存
cv2.imwrite("room.png", numpy.array(image))
背景画像の生成を行います.
zoom = zoomg.Zoomg(height, width)
- 引数
パラメータ | 型 | キーワード引数 | 省略 | 説明 |
---|---|---|---|---|
height | int | 可(h) | 入力画像の高さ | |
width | int | 可(w) | 入力画像の幅 |
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
zoom | Zoomg | Zoomg オブジェクト |
zoomg オブジェクトに画像を追加します.動画を入力したい場合はフレーム単位で分割する必要があります.
zoom.add_image(frame)
- 引数
パラメータ | 型 | キ ーワード引数 | 省略 | 説明 |
---|---|---|---|---|
frame | 3 次元 numpy.ndarray | zoomg オ ブジェクトに 追加する画像 |
- 返り値
- なし
Zoomg.add_image
で追加した画像から背景画像を復元する.
zoom.generate_image(comp, param, noise_frame)
- 引数
パ | 型 | キ | 省略 ラ | | ー | メ | | ワ | ー | | ー | タ | | ド |
|
説明 | |||
---|---|---|---|---|
c o m p | s t r i n g | 可 (co mp) | 可(default= “ciede2000”) | 色差を決定する.詳 細は表「色差」を参照. |
p a r a m | f l o a t | 可( par am) | 可(defau lt=表「色 差 _」を参照) | 各ピクセルが部屋の背景かバーチ ャル背景か判定するためのパラメータ.詳 細は表「色差」を参照. |
n o i s e _ f r a m e | i n t | 可( noi se_ fra me) | 可 (default=1) | 画像にノイズが多く含まれてい る場合,ノイズを軽減するためのパラメータ |
色 差計算 アルゴ リズム | co mp | param 指定可 能範囲 | 省略 | 説明 |
---|---|---|---|---|
コ サイン 類似度 | ` c os _s im ` | [0.0, 1.0] | 可 (def ault= 0.75) | 高くす ると復元できるピクセル数が減り **,低くすると誤判定が**増える. |
CI EDE2000 | ` c ie de 20 00 ` | [0.0, 100] | 可 (def ault= 5.06) | 高くす ると誤判定が増え,低くすると 復元できるピクセル数が減る. |
- 返り値
- なし
Zoomg.generate_image
で生成した画像を取得します.
image = zoom.get_image()
- 引数
- なし
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
image | int 型 3 次元 list | 復元した画像ファイル |
Zoomg.generate_image
を使用した際,正しく復元できたか拘らず,復元したピクセル数を返します.この数はZoomg.generate_image
の引数param
に影響されます.
omgc = zoom.get_omgc()
- 引数
- なし
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
omgc | int | 復元したピクセル数 |
Zoomg.generate_image
のparam
引数の値がどれだけいいものか検証します.部屋の画像と復元した部屋の画像からどれだけ二つの画像が似ているか計測し,復元精度を返します.
ok, ng, acc = zoomg.verify(room_image, comp, param)
- 引数
パ | 型 ラ | メ | ー | タ | |
キ ー ワ ー ド 引 数 | 省略 | 説明 | |
---|---|---|---|---|
r o o m _ i m a g e | 3 次元 num py.nd array | 部屋の画像 | ||
c o m p | s tring | 可 (c om p) | 可 (default=“ ciede2000”) | 色差を決定する.詳細 は表「色差」を参照. |
p a r a m | float | 可 ( pa ra m) | 可(default= 表「`色差 <#色差>`__ 」を参照) |
各ピクセルが部屋の背景かバーチャル 背景か判定するためのパラメータ.詳細 は表「色差」を参照. |
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
ok | int | 部屋の画像と復元画像のピクセル一致数 |
ng | int | 部屋の画像と復元画像のピクセル不一致数 |
acc | float | 精度(ok / (ok + ng) ) |
生成画像の高さを取得します.zoomg.Zoomg(height, width)
のheight
と同一の値になります.
height = zoomg.get_height()
- 引数
- なし
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
height | int | 生成画像の高さ |
生成画像の幅を取得します.zoomg.Zoomg(height, width)
のwidth
と同一の値になります.
width = zoomg.get_width()
- 引数
- なし
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
width | int | 生成画像の幅 |
生成画像の高さと幅を取得します.zoomg.Zoomg(height, width)
のheight
と同一の値になります.
height, width = zoomg.get_shape()
- 引数
- なし
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
height | int | 生成画像の高さ |
width | int | 生成画像の幅 |
その他,利用できる関数をこちらに記載します.
背景画像の生成を妨害します.画像に対してノイズを入ります.
zoomg.get_shape(image&, height, width, rate)
- 引数
パラメータ | 型 | キー ワード引数 | 省略 | 説明 |
---|---|---|---|---|
image | 3 次元 nu mpy.ndarray の参照 | ノイズを入 れたい画像 | ||
height | int | 可(h) | imag
e の高さ |
|
width | int | 可(w) | im
age の幅 |
|
rate | float | 可(rate) | 可(defa ult=0.0003) | ノイズの 入れる割合 |
- 返り値
パラメータ | 型 | 説明 |
---|---|---|
height | int | 生成画像の高さ |
width | int | 生成画像の幅 |
- 本ソースコードのコンパイル
> pwd
ほにゃらら/zoomg/zoomg
> clang++ -O3 -Wall -shared -std=c++17 -fPIC `python -m pybind11 --includes` -undefined dynamic_lookup zoomg.cpp ColorSpace/src/Comparison.cpp ColorSpace/src/ColorSpace.cpp ColorSpace/src/Conversion.cpp -o zoomg`python3-config --extension-suffix`
- 実行
> cd test
> pip uninstall zoomg # いらないかも
> python test.py sample_02.mp4