Skip to content

Latest commit

 

History

History
132 lines (90 loc) · 4.93 KB

README.md

File metadata and controls

132 lines (90 loc) · 4.93 KB

MediaPipe Socket

This is a simple python script that allows you to send data from MediaPipe to a UDP socket.

ウェブカメラを起動し、メディアパイプポーズで全身のポーズ検出、取得された体の 33 個のランドマーク(三次元座標+visibility)をローパスフィルターを通して自身の UDP ソケットに送信します。

デフォルトではローカルホストのポート 8080 に送信されます。

環境構築

複数方法があります。

注意: 以下のpythonコマンドは、python3です。自分の環境に応じてpypython3に置き換えてください。

2, 3 の方法は動作確認済み。pipのバージョンが古いと動かないかもしれません。

pipでグローバルにパッケージをインストールする方法

pip install -r requirements.lockrequirements.lockに記載されているパッケージをインストールします。

まったくオススメしません。

venvpipで仮想環境にパッケージをインストールする方法

python -m venv .venv
pip install -r requirements.lock # 依存関係をインストール
source .venv/bin/activate # 仮想環境に入る

ryeで仮想環境にパッケージをインストールする方法

ryeをインストールします。Linux(WSL)の場合は以下。Windows の場合公式から .exe ファイルをダウンロードしてください。(cargoでビルドでも可)

  • WSL Ubuntu
curl -sSf https://rye-up.com/get | bash
  • Windows
scoop install rye

or

cargo install --git https://github.com/astral-sh/rye rye
  • ArchLinux
yay -S rye
  • Mac or Any Other Linux
brew install rye

公式のインストールガイドでは、この後echo 'source "$HOME/.rye/env"' >> ~/.bashrcを実行するように書かれていますが、これを実行すると、既存の Python の環境と衝突する可能性があります。 WSL で検証したところ、必要そうでした。

rye sync # 依存関係をインストール
rye shell # 仮想環境に入る

使い方

指定のIPに固定してある場合(本番用)

rye run all

or

python mediapipe_socket

ローカルホストで動かす場合(開発用)

rye run local

or

python mediapipe_socket --ip_address "127.0.0.1"

-hオプションで利用可能なコマンドライン引数を確認できます。

デバックモードと通常モードの切り替え

  • Dキーを押すことでデバッグモードに切り替えることができます。
  • デバックモードでは、予め用意した画像を読み込んでカメラ入力の代わりに利用することができます。
  • 複数の画像を読み込んでいる場合は数字キー(0~9)を押すことで画像の切り替えができます。
  • filenamesに書かれている順番で画像に0から9の番号が割り振られます。この番号と数字キーの数字が対応しています。
  • デフォルトでは0キーに対応する画像が最初に表示されるようになっています。変更する場合はfilenamesの順番を書き換えてください。
  • Rキーを押すことでデバックモードを終了してカメラ入力に戻すことができます。

デバッグ画像の読込

  • デバッグ画像を追加で読み込みたい場合は、画像をdebugImagesフォルダの直下に追加して、debug.py内のfilenamesに追加した画像のファイル名を追加してください。
#debug.py

filenames: List[str] = [
    "T-pose.png",
    "X-pose.png",
    #ここに追加(拡張子も書いてください。)
]

開発環境

  • pylance(pyright): 言語サーバー・型チェッカー
  • black: フォーマッター
  • isort: importのソート
  • flake8: リンター
  • tox: 自動化