project: hidecam

Using a Kinect as webcam is nothing special. On linux it’s supported by an in-kernel driver. For windows, it might work as well. However, this project goes one step further, as it aims to make use of the features of the Kinect as a 3d camera to enable several visual effects to manipulate the video stream that will be seen remotely.

Actually, it is not possible to manipulate the data from a video device before it is used by another program. Therefore one has to create it’s own (fake) video device, take frames from the original source, manipulate them in any way and then push them to this new device. To create a fake video device, the v4l2loopback kernel module is used.

After a first test that used the quite limited ui functions from OpenCV and was – more or less – just a proof of concept, I created a new project wich uses Qt for the user interface and got some first code refactoring. Its still a bit unoptimized and hence may be slow or eat quite a bit of RAM. Also, there are only a few sample effects. These include erasing the background (i.e. everything with a certain minimum distance) and hiding a persons head or eyes with some overlay (censor bar, Guy Fawkes mask, Tux head etc.). The video format of output is choosen so that the fake video device will be recognized by Skype, hence it can be used for video calls.

The project repository can be found as part of my kinect playground repo, where hidecam was the first attempt and hidecam2 is the second version which uses Qt for the ui. As I said before, its clearly labeled as experimental prototype!