Hi, Using Daniel Shiffmana's MinMaxThreshold tutorial, I was able to change the colour from red to blue to green based on their distance to the Kinect. I would like to make a wall where when 2 people walk past each other, their silhouette colours mix. I tried to play with opacity with a background image but wouldn't mix 2 different silhouettes detected by kinect. Should I use blog detection to get the kinect to detect multiple people and how would I do this? I am using Kinect2 with Processing3 and seems like SimpleOpenNI doesn't work for Kinect2? Thanks!
Here's the code:
import org.openkinect.processing.*;
// Kinect Library object
Kinect2 kinect2;
//float minThresh = 480;
//float maxThresh = 830;
PImage kin;
PImage bg;
void setup() {
size(512, 424, P3D);
kinect2 = new Kinect2(this);
kinect2.initDepth();
kinect2.initDevice();
kin = createImage(kinect2.depthWidth, kinect2.depthHeight, RGB);
bg = loadImage("1219690.jpg");
}
void draw() {
background(0);
//loadPixels();
tint(255,254);
image(bg,0,0);
kin.loadPixels();
//minThresh = map(mouseX, 0, width, 0, 4500);
//maxThresh = map(mouseY, 0, height, 0, 4500);
// Get the raw depth as array of integers
int[] depth = kinect2.getRawDepth();
//float sumX = 0;
//float sumY = 0;
//float totalPixels = 0;
for (int x = 0; x < kinect2.depthWidth; x++) {
for (int y = 0; y < kinect2.depthHeight; y++) {
int offset = x + y * kinect2.depthWidth;
int d = depth[offset];
//println(d);
//delay (10);
tint(255,127);
if (d < 500) {
kin.pixels[offset] = color(255, 0, 0);
//sumX += x;
//sumY += y;
//totalPixels++;
} else if (d > 500 && d<1000){
kin.pixels[offset] = color(0,255,0);
} else if (d >1000 && d<1500){
kin.pixels[offset] = color(0,0,255);
} else {
kin.pixels[offset] = color(0);
}
}
}
kin.updatePixels();
image(kin, 0, 0);
//float avgX = sumX / totalPixels;
//float avgY = sumY / totalPixels;
//fill(150,0,255);
//ellipse(avgX, avgY, 64, 64);
//fill(255);
//textSize(32);
//text(minThresh + " " + maxThresh, 10, 64);
}