Outils pour utilisateurs

Outils du site


wiki:tutoriels:kinect_dessiner_avec_la_main:kinect_dessiner_avec_la_main

Ceci est une ancienne révision du document !


Dessiner avec la main avec la kinect

Exemple de la librairie OpenKinect for Processing

Daniel Shifmann propose un tutoriel très pratique pour l'utilisation de la Kinect :

L'exemple AveragePointTraking2 de la librairie OpenKinect permet de détecter le point moyen le plus proche de la Kinect et de dessiner un cercle rouge sur ce point. Vous pouvez le retrouver dans Examples> Open Kinect For Processing > Kinect_v2 > AveragePointTraking2.pde .

Le programme commenté en français est le suivant : A COMPLETER PAR FLORA WAN DER POORT

Exemple 1 : Dessiner une ligne brisée

A partir de l'exemple précédent AveragePointTraking2, on peut dessiner des lignes successives entre le point détecté à l'instant tn et le point détecté l'instant suivant tn+1.

Le code est le suivant :

// Daniel Shiffman
// Tracking the average location beyond a given depth threshold
// Thanks to Dan O'Sullivan

// https://github.com/shiffman/OpenKinect-for-Processing
// http://shiffman.net/p5/kinect/

import org.openkinect.freenect.*;
import org.openkinect.processing.*;

// The kinect stuff is happening in another class
KinectTracker tracker;
Kinect kinect;

// dessin
PVector anciennePosition;
int compteurFrames = 0;


void setup() {
  size(640, 520);
  // initialisation var. Glob.
  kinect = new Kinect(this);
  tracker = new KinectTracker();
  anciennePosition = new PVector(0, 0);
}

void draw() {
  //background(255);

  // Run the tracking analysis
  tracker.track();
  // Show the image
  //tracker.display();

  // Rond Rouge
  // Let's draw the raw location RED
  PVector v1 = tracker.getPos();
  fill(#FC0808);
  noStroke();
  ellipse(v1.x, v1.y, 20, 20);

  // dessin d'une ligne brisée
  if (compteurFrames > 3 ) { //compteurFrames > 3 : on me prend pas en compte les 1ers points
    strokeWeight(2);
    stroke(255, 255, 0);
    line(anciennePosition.x, anciennePosition.y, v1.x, v1.y);
    // mémorisation de la nouvelle position
    anciennePosition = v1;
  }


  // Info Profondeur
  // Display some info
  int t = tracker.getThreshold();
  fill(0);
  text("threshold: " + t + "    " +  "framerate: " + int(frameRate) + "    " + 
    "UP increase threshold, DOWN decrease threshold", 10, 500);
    
  // incrémentation du compteur de frames
  compteurFrames++;
  println("compteurFrames = "+compteurFrames);
}

// Adjust the threshold with key presses
// réglage profondeur de champ
void keyPressed() {
  int t = tracker.getThreshold();
  if (key == CODED) {
    if (keyCode == UP) {
      t+=5;
      tracker.setThreshold(t);
    } else if (keyCode == DOWN) {
      t-=5;
      tracker.setThreshold(t);
    }
  }
}
wiki/tutoriels/kinect_dessiner_avec_la_main/kinect_dessiner_avec_la_main.1606409354.txt.gz · Dernière modification: 2020/11/26 17:49 de damien.muti