ofxKinect vs ofxOpenNI

I`m beginning a project using the kinect for hand detection. Hand detection does not need to be particularly accurate, but needs to be fast and work with multiple hands at a distance of 2-3m.

My question regards the efficacy of ofxKinect vs. ofxOpenNI, ofxKinect is now part of the main open frameworks build, so I’m tempted to use that, but openNI has many more tracking features. The github repo for open NI has not been committed to in 2 years, so that’s troubling. Is anyone still using ofxOpenNI? Or should I bite the bullet, use ofxKinect and do my own CV using ofxOpenCV?


Hi @misteryDate, any findings here? What did you use in the end?

I’m porting a project from Processing to OF and was wondering what to use. There is also a ofxOpenNI2 but it’s on development.

Oh, definitely ofxKinect. At this point it’s super well supported by openFrameworks and that beats out any added features that openNI has. Plus, I believe that openNi was owned by primeSense, which was purchased by Apple and then killed (i.e. no support at all these days).

I strongly recommend using the ofxCv addon, if you’re doing any image processing. It’s a great, great addon that I’m sure will be part of the standard library soon.

1 Like

That sounds great @mysteryData! Yes, I am also using ofxCv :slight_smile:

Did you code all hand recognition stuff by yourself? In Processing, for example, you can easily detect hands or users (skeleton, etc). I’m not sure how to deal with that with ofxKinect.


It’s definitely an apples and oranges situation. ofxKinect is by far the easiest way to interface with the depth camera (and other features) of the Kinect, it comes with oF and will be really easy to build, etc, but it does not offer skeleton and hand tracking like ofxOpenNI does.

1 Like

@jorditost In the end I didn’t need “real” hand tracking. My installation was a table in a museum that visitors hold their arms over. Because I only had images of arms and hands, I needed to make my hand detection from scratch.


There’s the source, if you want it. It’s not exactly human readable…

As @hahakid says, it really depends on your application here, i.e. whether you’re willing to sacrifice skeleton tracking for ease and speed of build. What platform are you building for?

1 Like

Thanks for your replies @hahakid & @mysteryDate (thanks for sharing your repo code!)

I decided to do it with ofxKinect. My situation is similar than yours. I actually don’t need this skeleton tracking and working directly with the depth image will be faster.

I’m coding with OSX, but we will compile it for Windows in the end. Does it make a difference?

Haha. Your setup is VERY similar to mine in the end. I apologize in advance for how poorly documented the repo I sent you is (it was a one-and-done project).

I, too, was working with OSX but finally had to deploy with Windows. I had a fairly easy time with this. The only real problems were with UTF characters (duh) and HD video playback (which blew my mind). The first one just required screwing around a bit, the second was answered by ofxGstStandaloneVideo. I documented my experience in the repo above. Good luck!