仕事に使える無料動画撮影スタジオを作ってみる

# Youtuberは稼ぎが少なくなったそうですが…
:::note info
お詫び
私はテレビもYoutubeもあまり視聴しないので、思考のズレはご勘弁ください
:::

## 素人の少ない動画配信イメージ
- 男女ペアが部屋で日本語となんか外国語を交えている
- Youtuberさんのタレントが命！体張っている感があり。
- 実用系の動画

## 仕事面から見た動画配信
- コロナ下に流行ったZoomなどの配信（なんか裏が見え隠れする背景）
- セットを準備して背景を整える

# ノスタルジーで撮影スタジオを作ってみる
- もともとそれが目的ないんですが、仕事の本題に物体検知があった
- せっかくなんで、配信とか昔のテレビ番組とかアイドルのサイン会みたいな動画を作りたいな
- 写真だったら背景の上に人間かぶせればいいけど、不自然感あり。

## 命題
- リアルタイム撮影
- Zoomとかみたいにちらちら背景が見えない。
- 人間だけ映したい

### お蔵入りしたプログラム
怖いので、開かないでください

<details><summary>Opencvで人物を追ってみる(お蔵入り)</summary>



```python:python
import cv2

# Load the pre-trained Haar cascade classifier for face detection
cascade_path = 'haarcascade_frontalface_default.xml'
cascade = cv2.CascadeClassifier(cascade_path)

# Initialize the webcam
cap = cv2.VideoCapture(0)

while True:
    # Read frame from the webcam
    ret, frame = cap.read()

    if not ret:
        break

    # Convert the frame to grayscale
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Perform face detection using the Haar cascade classifier
    faces = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    # Draw bounding boxes around the detected faces
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # Display the frame with bounding boxes
    cv2.imshow('Face Detection', frame)

    # Exit if 'q' is pressed
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release the webcam and close windows
cap.release()
cv2.destroyAllWindows()

```
</details>


# 和名：笑〇的電影箱じゃなくて、いつでもどこでもスタジオ
- ちょっとノスタルジックですが、あれはたしか全身タイツ？だったはず。
- こちらは自分が出ていればそれでヨシ
- 背景を会見場みたくしてもいいですね。

https://www.odakyu.jp/wallpaper/

**小田急さんは記者会見場風背景もアップしてくれています。**

### 各テレビ局でもスタジオ壁紙配布しています。

https://www.ntv.co.jp/wallpaper/

https://www.tbs.co.jp/virtualwp_tbs/

https://v.sp2.fujitv.co.jp/index.cgi

https://www.nhk-cs.jp/jushinryo/thanks/virtualbg.html

- AテレとTテレは特に設けていないようですね・・・
- NHKはそもそもテレビみないけど、受信機あるんで、載せておきます。


## で仕事の途中で産まれてしまった子がこちら

https://github.com/mi-kaneyon/Virtual_Studio

:::note info
インフォメーション
- コマンドは超簡単です
- 背景はコードの下記の部分を変更ください
- 悩んだ末、GPL3.0ライセンスです(意味あるのかな？）
:::

:::note info
Update (13th Sep 2024)
- improve pytorch warning update
- capture size larger
- 表示サイズとtorch関係の古くなったコードの改善をしました
:::

**要カスタマイズ個所**

```python:python


# Load the background image
background = Image.open('background.jpg')
background = background.resize((640, 480))  # Adjust this to match your webcam resolution
background = np.array(background)  # Keep the background in its original color scale




```


 <img width="400" alt="sample" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/2fae0132-43b8-a05f-1889-cb3ed938e492.png">

**↑ 人間が動いてもしっかり表示 ↑**

![main_pc_sec.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/6d99ee43-326c-f5e7-1a74-4694314cef0b.jpeg)

- 【引用元】音楽貸しスタジオ 【サウンドスタジオノアNOAH】さん
- 多分ここに自分が立てばミュージシャン。というよりエアバンドか・・・


:::note info
インフォメーション
- 実際の人間ではないですが、下記動画上げました。GPU推奨です。どうもそんなに最新でなくても結構ヌルヌルでいけそう。
- 右側の変な模様は私です。恥ずかしいので、隠しました。
:::



## 自分顔出しなので、それっぽいフィギュアで動画

https://youtu.be/vj_2_T0abF8

- 背景引用元：上記リンクの小田急電鉄素材ページから記者会見風背景をお借りしました。ありがとうございます。
- 人間そのものでないので、かなり抜けて背景が出てしまっていますが、人間であれば上記のマスク画像のように全部表示できます。
- 人間でないとグダグダなようですので、人間で動画作ります（予定）

https://youtu.be/LKrsrvXfox4

- 上記のTBSさんのスタジオを借りて人間を使ってみました。
- 超短い・・・


## 人によっては無料で撮影環境ができるはず！
**想定用途**
- 動画配信
- 記者会見？常設できない場合など
- 旅行行ってますアピール等々

:::note info
インフォメーション
- そういえば、瞳に背景がカメラ側の風景が映りこまなければ、身バレとか対策にもなる？
- ウチの会社では意味わかる人いないんだろうなぁ。
:::


# 機能追加(2023/6/23、25)

:::note info
インフォメーション
- MP4キャプチャ機能追加しました。別ファイルにしてます。一応。
- 解像度 SD（1280x720）まで対応しました。
- 必要な方は解像度と背景のパラメータいじってください。ただし、コマ数保証しません。
:::

:::note info
インフォメーション
- テーブルの画像を使用した会見場を再現する場合は普通に座ればテーブル椅子は映らないはずです。
- カメラの焦点距離に依存します。
- いずれにしても背景は映らないので、その辺は安心
:::

# 機能追加(2023/7/20)

:::note info
背景の逆に人にモザイクをかけるバージョンを作成しました。
- DIY公開の撮影者向きでしょうか。
- ただ、皆様普通に顔出しされているようなので需要は少ないかもですが・・・
- カメラの焦点距離・ピント等に依存します。
:::

https://github.com/mi-kaneyon/person_privacy