pd-external: pix_openni 0.10

If you are working with Xbox Kinect Sensor here is another goodie for you – A pure data / Gem external to get Kinect rgb and depth streams as well as skeleton tracking and multiple hand tracking via OpenNI[1]

Download the packed Binaries for OSX and Windows pix_openni-0.10.zip.
Latest sourcecode available at github: http://github.com/kronihias/pix_openni

Look at this page if you don’t know how to install a Pd-External.

To control tilt, led and output accelerometer data you can use libfreenect based http://github.com/kronihias/freenect.
To get audio streams you can use libfreenect based http://github.com/kronihias/freenect_audio.

pix_openni (0.10 experimenting…)
pure data / Gem external to get Kinect rgb and depth streams, skeleton tracking, hand tracking

* depends on OpenNI, NITE, SensorKinect

2011/2012 by Matthias Kronlachner

tested under Ubuntu, OSX 10.6.8 and Windows 7

you don’t have to compile the external for yourself -> use included binaries from build folder (copy pix_openni.pd_darwin in pix_openni folder)
you still need OpenNI, NITE and SensorKinect!!
* download latest OpenNI and NITE unstable build for OSX from http://www.openni.org/Downloads/OpenNIModules.aspx,
sudo ./install.sh in the extracted folders
* install SensorKinect from https://github.com/avin2/SensorKinect

you don’t have to compile the external for yourself -> use included binaries from build folder (copy pix_openni.dll in pix_openni folder)
install OpenNI, NITE and SensorKinect

(OpenNI SDK v1.5.4.0)

Binary of NITE
(NiTE v1.5.2.21)

Binary of avin2 / SensorKinect

* get/install pd and Gem (http://puredata.info)

* get and install OpenNI, NITE and the hacked Primesense Kinect driver
–> instruction: https://github.com/avin2/SensorKinect

* edit Makefile for right path to Gem, pd and OpenNI sources

* #…/pix_openni> make

* have a look at the pix_openni-help.pd file!

:: Usage ::

* Have a look at my pd-kinect-examples at Github: http://github.com/kronihias/pd-kinect-examples

Hand Tracking:

to track multiple Hands edit following File:
and add or uncomment:



0.10 * various bugfixes
* depth_output simplified – just rgba and yuv available ->
* ATTENTION INCOMPABILITY: “viewable” depth output outsourced into pix_depth2rgba
* record and playback functionality
* user coloring
* skeleton settable smoothing factor

0.03 * switchable OSC Style output of tracking data /skeleton/joint/r_hand id x y z, /hand/coords id x y z
* switchable real-world coordinate output in [mm]
* switchable registration between rgb image and depth image -> change point of view from depth camera to match with rgb image (overlay)
* improved help file

* OSX binaries
* output rgb and depth stream simultaneously
* hand tracking
* change image and depth modes
* init without .xml init file
* fixed depth to rgb conversion for output_mode 1 & 2

* skeleton and rgb or depth stream output


* support for multiple Kinect

* motor and led control as well as audio is currently not supported from SensorKinect
you can do that with pd external freenect: http://github.com/kronihias/freenect

* optimize record/playback functionality

questions: m.kronlachner@gmail.com

  1. [1]http://www.openni.org

4 thoughts on “pd-external: pix_openni 0.10

  1. Pingback: Kinect Hackek: Openni, Openkinect « SensorBreakers

  2. Pingback: trailer :: übersetzen – vertimas | matthiaskronlachner.com

  3. Hi,
    first of all thanks for your code! very usefull!
    I have compiled pix_openni successfully but I don’t get how to run hand tracking. I send value hand 1 and consolle tell me “OpenNI:: HandTracking started!”
    So it is supposed to go. There is some kind of pose to start?
    thanks for help

    • hi!
      you’re welcome.
      for hand tracking you need to make a “waving gesture” so that nite starts tracking your hand.
      just wave your hand and it should recognize it after short time.
      you can also check the config files (somewhere like /usr/etc/primesense/Hands_*/Nite.ini) to enable multiple hands support.

      anyway i think that the hand tracking is not well done in nite. you can try to use opencv or threshold the depth image and use pix_multiblob.


Leave a Reply

Your email address will not be published. Required fields are marked *

Spam protection: * Time limit is exhausted. Please reload CAPTCHA.