Counting people

Tracking with openframeworks and multiple Kinects

Together with Jonas Jongejan I helped a group of students at the Technical University of Denmark consisting of Rikke Brinkø, Anne Cathrine Larsen and Jens Christian Hillerup create a project for Roskilde Festival 2011. The idea was to count people arriving at the train station and display a live estimation of the amount of C02 saved compared to the same amount if people would have gone to the festival by car.



Our challenge was that we where unable to obstruct people in anyway so we started looking in to computer vision and background subtraction, however as cameras are expensive and background subtraction with no fixed background or light is very difficult we started to look for alternative solutions. We had a few Microsoft Kinects at hand so we started out testing a setup with Kinects and open frameworks. We quickly made a working prototype with 1 Kinect and a Macbook. But with 1 kinect we where only able to cover about 3 meters and we had to count people coming through a 7 meter wide portal. Trying to add support for multiple Kinects we faced some challenges; the Kinect overloads the USB bus so we had to either upgrade our host computer - not within our budget - or use 3 old windows computers we had available as slaves processing the kinect input and sending it on. After spending more than a day finding linker errors in our open frameworks code we finally got it to compile and set up a slave computer for each Kinect converting the input to our own blob data format and sending it on to our Macbook acting as the server.

After a day of optimizing our algorithms we had a stable test setup and using Mac OS text to speech we added voice feedback counting and greeting people with random messages.

Regrettably it never worked on site as the Festival did not provide the shaded gate as agreed, but we learned a lot and we did set up a demo proving that our technology works.


If you are interested in playing with the technology have a look at the source.