Python bindings for the OpenNI library
C++ C CMake Objective-C Python
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



PyOpenNI is a project integrating the OpenNI computer vision library on Python.
It is based on onipy but adds many improvements to it:

  • Implemented more features.
    • Some capabilities are now exposed!
    • Polymorphism on production nodes is handled correctly.
  • Removed unnecessary OpenNI prefixes.
  • Uses CMake, the popular cross-platform buildsystem, to configure & compile the bindings.
    This way, it autodetects needed libraries and warns you if they're not found.
  • Code cleanup and formatted according to PEP 8 rules.
  • Directory structure simplified.
  • Errors are handled gracefully through the class OpenNIError.
  • Re-wrote wrapper's core to make it more robust and avoid crashes.
    • New! Access depth map efficiently! See the commit for details.
  • Callbacks are now completely supported!
  • Some exposed features are now documented in Python.

PyOpenNI is written with the Boost.Python libraries. PyOpenNI is released under the GNU LGPL version 3.

Note: Currently, not all features are being exposed to Python (see the status page). We are working to add more, but if you want to accelerate this process you're encouraged to collaborate. Contact me if you wish to help develop PyOpenNI. See the github page if you want to submit a bug or a feature request. Thanks!

Quick install

Things you'll need:

  • GIT to download
  • OpenNI and Python (obviously)
  • CMake
  • A compiler for your platform (GCC, XCode, VS, MinGW, ...)

Then, assuming Git and CMake are installed and in your PATH:

git clone
mkdir PyOpenNI-build
cd PyOpenNI-build
cmake ../PyOpenNI
# Build with your compiler

That's it! The finished module is at lib/openni.<ext>; just copy it to your Python modules' directory.

Instructions for specific platforms can be found on the wiki.
Still in trouble? Signup on Github (it's free!) and ask for support.

Getting started

To import the module:

import openni

and, if you prefer, you can also

from openni import *

so you don't have to type this annonying openni. before the class names.
To get started, I suggest you to see the samples at the examples/ folder. And, to look at the documentation of PyOpenNI:

help(openni)              #Help about the whole module
help(openni.Context)      #Help about a specific class
help(openni.Context.init) #Help about a specific function