Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

techniken:kinect

Dies ist eine alte Version des Dokuments!




Kinect

Die Kinect ist eine Hardware zur Steuerung der Xbox360. Mit ihr lassen sich besonders gut Tiefen-Informationen eines Raumes gewinnen und die Silhouette eines Menschen vom Raum trennen.

Wir wollen zunächst die Kinect unter Windows für Processing einrichten. Dazu müsst ihr folgende Installationen durchführen:

- Processing

  1. Download Processing 2.0 oder spätere
  2. Geh in das Menü: Sketch → Import Library → Add Library
  3. Installiert „SimpleOpenNI“

- Kinect SDK

  1. Download Kinect SDK
  2. Installer starten

Es kann sein das ihr zusätzlich noch die .NET Frameworks installieren müsst, aber darauf macht euch der Kinect SDK installier aufmerksam. Nach erfolgreicher Installation sollte die Kinect im Gerätemanager auftauchen.

Kinect Physics Tutorial for Processing

Auf der Website http://www.creativeapplications.net findet ihr ein spektakuläres Tutorial zur Kinect. Da seit erstellen des Tutorials neue Versionen der SimpleOpenNI und Processing erschienen sind, solltet ihr den SourceCode aus dem Wiki verwenden. Der Code von „creativeApplications“ funktioniert leider nicht mehr. Außerdem benötigt ihr einige weiter Bibliotheken unter Processing um den Code ausführen zu können. Die Installation erfolgt analog zu der von SimpleOpenNI.

Geh in das Menü: Sketch → Import Library → Add Library

  • Installiert „v3ga blob detection“
  • Installiert „Toxiclibs“
  • Installiert „PBox2D“

UserPixel

Zunächst schauen wir uns eine einfache Möglichkeit an, eine Person vom Rest der Umgebung zu isolieren:

// UserPixel Basic Example by Corvin Jaedicke (15.08.13)
 
import processing.opengl.*;
import SimpleOpenNI.*;
 
SimpleOpenNI  kinect;
 
PImage  userImage;
int userID;
int[] userMap;
int[] user;
 
PImage rgbImage;
void setup() {
  size(640, 480, OPENGL);
 
  kinect = new SimpleOpenNI(this);
  kinect.enableDepth();
  kinect.enableUser(); 
}
 
void draw() {
  background(0); 
  kinect.update();
 
  // if we have detected any users
  if (kinect.getNumberOfUsers() > 0) { 
 
    // find out which pixels have users in them
    user=kinect.userMap();
    userMap = kinect.userImage().pixels; 
 
    // populate the pixels array
    // from the sketch's current contents
    loadPixels(); 
    for (int i = 0; i < userMap.length; i++) { 
      // if the current pixel is on a user
      if (user[i] > 0) {
        // make it green
        pixels[i] = color(0,0,255); 
      }
    }
    // display the changed pixel array
    updatePixels(); 
  }
}
void onNewUser(int uID) {
  userID = uID;
  println("tracking");
}
techniken/kinect.1381849168.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)