Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

handjoints_osc-0.0.7.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

handjoints_osc-0.0.7-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

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

Hashes for handjoints_osc-0.0.7.tar.gz
Algorithm Hash digest
SHA256 6b7116039b0559396d5885dfbac4d957977db26fd8ca0d97ccfae71ff877a6fb
MD5 7d560175e3716f4499e4e30356c7eba5
BLAKE2b-256 1cc2575fbe98e5e0b6867a7f124414212d4fae336cb87fd30b1a71b1b53f2a24

See more details on using hashes here.

File details

Details for the file handjoints_osc-0.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for handjoints_osc-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ffc107b12e20273c2e8737c4122dcbefb7679b9e21a00e005e7b60f6e4bca456
MD5 2e0d3480bd1869c6e19488576eb6e7cb
BLAKE2b-256 2f0b0c188c84953bb407f91ed054c10ec6163e8d1baf463edb0ea0f963daa086

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page