ある程度形になったのでとりあえず貼っておく
import SimpleOpenNI.*; import ddf.minim.*; SimpleOpenNI kinect; HashMap<Integer, PVector>hands=new HashMap<Integer, PVector>(); PVector posLeft =new PVector(0, 0); PVector posRight =new PVector(0, 640); boolean flag=false; Minim minim; AudioPlayer hajime; AudioPlayer ok1; AudioPlayer ok2; AudioPlayer count; AudioPlayer bluescreen; void setup () { minim=new Minim(this); ok1=minim.loadFile("ok1.wav"); ok2=minim.loadFile("ok2.wav"); hajime=minim.loadFile("hajime.wav"); hajime.play(); kinect=new SimpleOpenNI(this); kinect.enableDepth(); kinect.setMirror(true); kinect.enableRGB(); kinect.alternativeViewPointDepthToImage(); kinect.enableGesture(); kinect.addGesture("Wave"); kinect.addGesture("RaiseHand"); kinect.enableHands(); size(kinect.depthWidth(), kinect.depthHeight()); } void draw() { kinect.update(); //tint(128, 128, 128, 255); image(kinect.rgbImage(), 0, 0); drawHands(); strokeWeight(1); line(posLeft.x, 0, posLeft.x, kinect.depthHeight()); line(posRight.x, 0, posRight.x, kinect.depthHeight()); } void drawHands() { for (Map.Entry entry:hands.entrySet()) { int id=(Integer)entry.getKey(); PVector pos3d=(PVector)entry.getValue(); PVector posScreen =new PVector(); kinect.convertRealWorldToProjective(pos3d, posScreen); } } void onRecognizeGesture(String strGesture, PVector idPosition, PVector endPosition) { println("ジェスチャー名:"+strGesture); kinect.startTrackingHands(endPosition); if (strGesture.equals("Wave")==true) { if(flag==false){ bluescreen=minim.loadFile("bluescreen.wav"); bluescreen.play(); flag=true; }else{ count=minim.loadFile("count.wav"); count.play(); } delay(3000); PImage img1; img1=createImage(int(posRight.x-posLeft.x-1),kinect.rgbHeight(),RGB); img1=kinect.rgbImage().get(int(posLeft.x),0,int(posRight.x-posLeft.x-1),kinect.rgbHeight()); img1.save("img1.jpg"); save("img.jpg"); } else if(strGesture.equals("RaiseHand")==true){ for (Map.Entry entry:hands.entrySet()) { int id=(Integer)entry.getKey(); PVector pos3d=(PVector)entry.getValue(); PVector posScreen =new PVector(); kinect.convertRealWorldToProjective(pos3d, posScreen); if (posScreen.x<kinect.depthWidth()/3) { posLeft=posScreen; println("Left:"+posLeft.x+","+posLeft.y); ok1.play(); } else if(posScreen.x>kinect.depthWidth()/3*2) { posRight=posScreen; println("Right:"+posRight.x+","+posRight.y); ok2.play(); } } } } void onUpdateHands(int handId, PVector pos, float time) { hands.put(handId, pos); } void onDestroyHands(int handId, float time) { hands.remove(handId); }