import org.openkinect.freenect.*;
import org.openkinect.processing.*;
public int main_devicesCount;
boolean showDepthData = false;
tracker = new KinectTracker(this, maxDepth, minDepth);
text("Devices count: " + main_devicesCount, width-100, 50);
text("Pressed 'c' show, depth data.", width-100, 70);
tracker.ShowDepth(0, 2, 2 );
tracker.ShowDepth(1, 2+512, 0 );
tracker.ShowDepth(2, 2, 2+512);
tracker.ShowDepth(3, 2+512, 2+512);
tracker.ShowKinect(0, 2, 2 );
tracker.ShowKinect(1, 2+512, 2 );
tracker.ShowKinect(2, 2, 2+512);
tracker.ShowKinect(3, 2+512, 2+512);
showDepthData=!showDepthData;
ArrayList<Kinect> multiKinect;
float[] angle = new float[4];
KinectTracker(PApplet pa, int maxthr, int minthr) {
numDevices = Kinect.countDevices();
main_devicesCount = numDevices;
multiKinect = new ArrayList<Kinect>();
for (int i = 0; i < numDevices; i++) {
Kinect tmpKinect = new Kinect(pa);
tmpKinect.activateDevice(i);
multiKinect.add(tmpKinect);
angle[i] = tmpKinect.getTilt();
depthImg = new PImage(tmpKinect.width, tmpKinect.height);
public void ShowKinect(int index, float px, float py) {
Kinect tmpKinect = (Kinect) multiKinect.get(index);
image(tmpKinect.getDepthImage(), px, py, 512, 424);
public void ShowDepth(int index, float px, float py) {
Kinect tmpKinect = (Kinect) multiKinect.get(index);
int[] rawDepth = tmpKinect.getRawDepth();
for (int i=0; i < rawDepth.length; i++) {
if (rawDepth[i] >= minDepth && rawDepth[i] <= maxDepth) {
depthImg.pixels[i] = color(255);
depthImg.pixels[i] = color(0);
image(depthImg, px, py, 512, 424);
public int getMaxThreshold() {
public void setMaxThreshold(int t) {
public int getMinThreshold() {
public void setMinThreshold(int t) {
if (keyCode == java.awt.event.KeyEvent.VK_F1) {
} else if (keyCode == java.awt.event.KeyEvent.VK_F2) {
} else if (keyCode == java.awt.event.KeyEvent.VK_F3) {
} else if (keyCode == java.awt.event.KeyEvent.VK_F4) {
if (kinectIndex<numDevices) {
angle[kinectIndex] = constrain(angle[kinectIndex], 0, 30);
multiKinect.get(kinectIndex).setTilt(angle[kinectIndex]);
if (kinectIndex<numDevices) {
angle[kinectIndex] = constrain(angle[kinectIndex], 0, 30);
multiKinect.get(kinectIndex).setTilt(angle[kinectIndex]);
minDepth = constrain(minDepth+10, 0, maxDepth);
minDepth = constrain(minDepth-10, 0, maxDepth);
maxDepth = constrain(maxDepth+10, minDepth, 2047);
maxDepth = constrain(maxDepth-10, minDepth, 2047);