Dies ist eine alte Version des Dokuments!
import SimpleOpenNI.*; // importiert fremdes Programm SimpleOpenNI import processing.serial.*; // importiert Programm zum Senden von Werten aus Processing an Arduino Serial myPort; // Create object from Serial class SimpleOpenNI context; // misst Kinect-Daten PVector com = new PVector(); void setup () { size(640,480); // Größe des Fensters, das die Kameraaufnahmen zeigt context = new SimpleOpenNI(this); // startet Kinect if(context.isInit() == false) { // Fehlermeldung, falls Kinect nicht angeschlossen ist println("Can't init SimpleOpenNI, maybe the camera is not connected!"); exit(); return; } context.enableDepth(); // aktiviert Tiefenkarte context.enableUser(); // aktiviert die Erzeugung der Gelenkdarstellung der Benutzer background(200,0,0); // erzeugt den Hintergrund (rot, grün, blau) stroke(0,0,255); strokeWeight(3); smooth(); String portName = Serial.list()[Serial.list().length-1]; myPort = new Serial(this, portName, 9600); // Benutzung der seriellen Schnittstelle } void draw () { context.update(); // misst laufend die Daten der Kamera image(context.userImage(),0,0); // erzeugt Bild int[] userList = context.getUsers(); // Array, das die Daten der User speichert for(int i=0;i<userList.length;i++) { if(context.isTrackingSkeleton(userList[0])) { // falls Gelenkkoordinaten für einen User drawSkeleton(userList[0]); } // vorhanden sind, werden sie gezeichnet context.getCoM(userList[0],com); // misst den center of mass(COM) der Person println(com.x, com.y, com.z); // gibt die X-,Y-, und Z-Koordinaten des COM float curnumber = com.x ; // die X-Koordinate wird als curnumber deklariert while (curnumber< 10000) { myPort.write("someInt "+curnumber+"\n"); // sendet curnumber an die } // serielle Schnittstelle } } void onNewUser(SimpleOpenNI curContext, int userId) { println("onNewUser - userId: " + userId); println("\tstart tracking skeleton"); curContext.startTrackingSkeleton(userId); } void onLostUser(SimpleOpenNI curContext, int userId) { println("onLostUser - userId: " + userId); } void onVisibleUser(SimpleOpenNI curContext, int userId) { println("onVisibleUser - userId: " + userId); } void drawSkeleton(int userId) { // to get the 3d joint data /* PVector jointPos = new PVector(); context.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_NECK,jointPos); println(jointPos); */ context.drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK); context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_LEFT_SHOULDER); context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_LEFT_ELBOW); context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, SimpleOpenNI.SKEL_LEFT_HAND); context.drawLimb(userId, SimpleOpenNI.SKEL_NECK, SimpleOpenNI.SKEL_RIGHT_SHOULDER); context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_RIGHT_ELBOW); context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, SimpleOpenNI.SKEL_RIGHT_HAND); context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, SimpleOpenNI.SKEL_TORSO); context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, SimpleOpenNI.SKEL_TORSO); context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_LEFT_HIP); context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, SimpleOpenNI.SKEL_LEFT_KNEE); context.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, SimpleOpenNI.SKEL_LEFT_FOOT); context.drawLimb(userId, SimpleOpenNI.SKEL_TORSO, SimpleOpenNI.SKEL_RIGHT_HIP); context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, SimpleOpenNI.SKEL_RIGHT_KNEE); context.drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, SimpleOpenNI.SKEL_RIGHT_FOOT); }