Python bindings for the OpenNI library
C++ C CMake Objective-C Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
cmake Fix problem with priorities in FindOpenNI, see #39 Mar 29, 2013
src Add another fantastic contributor to README Jul 11, 2012
LGPL.txt Add deprecation notice Oct 20, 2015

OpenNI is not maintained anymore, and its official website was shutdown by 2014 following PrimeSense's acquisition by Apple. OpenNI and its associated middleware is no longer distributed, and as a result this module is no longer maintained. There is a fork called OpenNI 2 which is maintained here, but it's not compatible with this module.



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 (latest unstable version: and Python 2.7 or higher
  • CMake
  • A compiler for your platform (GCC, XCode, VS, MinGW, ...)

Note: if you have installed Python via a package manager, you'll also need the development files, because sometimes the CPython API is used directly.

Via APT (if you are on Debian / Ubuntu):

sudo apt-get install cmake build-essential git-core \
                     python-dev libboost-python-dev

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