real-time hands tracker, sends joints coords over OSC
Project description
handjoints-osc
Real-time hand tracking that sends joint coordinates over OSC. Written in Python, using Google MediaPipe.
Installation
Installing via pipx is recommended, because it installs in an isolated environment.
pipx install handjoints-osc
It's of course also possible to install via pip:
pip install handjoints-osc
Usage
$ handjoints-osc --help
usage: handjoints-osc [-h] [--host HOST] [--confidence CONFIDENCE] port
positional arguments: port send OSC to this port
options: -h, --help show this help message and exit --host HOST send OSC to this host (default: localhost) --confidence CONFIDENCE, -c CONFIDENCE minimum detection confidence threshold (default: 0.5) --device DEVICE, -d DEVICE video device index or path (default: 0, i.e. the default video device) --invert, -i invert colors
For example, to start the program and send joints coordinates to SuperCollider, which typically listens for OSC on port 57120:
handjoints-osc 57120
When hands are detected, SuperCollider will start receiving OSC messages with path "/handjoints-osc". To know which value corresponds to which joint, pressing "n" will display joint numbers on the tracking window.
Example using an alternative video device:
handjoints-osc -d /dev/video2 57120
Keybindings
- press n to toggle joint numbers
- press i to invert colors (light theme)
OSC format
- path:
/handjoints i *i* ...f
- [0] number of detected hands
- [1:numHands] handedness for each detected hand
- [numHands+1:..] x and y coordinates for each joint for each hand
The program detects maximum 2 hands, each hand has 21 joints, and each joint 2 coordinates.
Arguments are all in a single list, starting with the number of hands, then handedness for each hand, and following with x and y coordinates for all joints of one hand, and then the joint of each other hand.
[nHands, ...handedness, ...coordsHand0, ...cordsHand1] coords: [j0x, j0y, j1x, j1y, j2x, j2y, ...]
If only one hand is detected, numHands + handedness + coords (21 * 2) gives 44 values. If two hands are detected, there are two handedness values, so 1 + 2 + 42 + 42 = 87 values.
Development
Recommended: make a virtual environment
python -m venv .venv source .venv/bin/activate
Install requirements:
pip install -r requirements
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file handjoints_osc-0.0.7.tar.gz
.
File metadata
- Download URL: handjoints_osc-0.0.7.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.26.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b7116039b0559396d5885dfbac4d957977db26fd8ca0d97ccfae71ff877a6fb |
|
MD5 | 7d560175e3716f4499e4e30356c7eba5 |
|
BLAKE2b-256 | 1cc2575fbe98e5e0b6867a7f124414212d4fae336cb87fd30b1a71b1b53f2a24 |
File details
Details for the file handjoints_osc-0.0.7-py3-none-any.whl
.
File metadata
- Download URL: handjoints_osc-0.0.7-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.26.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ffc107b12e20273c2e8737c4122dcbefb7679b9e21a00e005e7b60f6e4bca456 |
|
MD5 | 2e0d3480bd1869c6e19488576eb6e7cb |
|
BLAKE2b-256 | 2f0b0c188c84953bb407f91ed054c10ec6163e8d1baf463edb0ea0f963daa086 |