Giter Site home page Giter Site logo

mediapipesocket's Introduction

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: 自動化

mediapipesocket's People

Contributors

ojii3 avatar upiscium avatar tuatmcc-public avatar

Stargazers

 avatar

Watchers

Ryo ICHIKAWA avatar Shuhei Enomoto avatar  avatar

mediapipesocket's Issues

Windows上でCrtl+C無いなった

Windowsのターミナル上で実行中にCrtl+Cが入力できず、ESCで終了後にターミナル上に^Cが大量出力される事象が発生してます。見た感じはすべての入力(キー入力全部)が弾かれているような気がします。

環境破壊に注意

pyproject.toml から build らへんの項目消さないと?最新の rye だと sync でコケる

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.