Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektews2013:moperro:processingcode

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);  
}
projektews2013/moperro/processingcode.1389963784.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)