Kinect

De Wikilipo
Aller à la navigation Aller à la recherche

Installation de librairies kinect en Processing sous macos x, linux et windows

pour Mac OS (openkinect de D. Schiffman)

  • Aller sur ce lien.
  • Télécharger openkinect.zip et le décompresser
  • Copier le répertoire openkinect dans ../Documents/Processing/librairies

pour Mac OS, Linux, Windows (Simple OpenNI)

Quelques exemples tirant parti des librairies openkinect (reprises par D.E. Stanley, HEAD, Genève)

  • Mettre ces sketches dans un répertoire sous Documents/Processing/
  • Lancer ces sketches dans Processing via File/Sketchbook/votreRepertoireTest

Canevas

Ce sketch ne fait rien... sauf initialiser l'espace de travail; il montre la structure de base d'un programme Processing utilisant la Kinect.

import librarytests.*;
import org.openkinect.*;
import org.openkinect.processing.*;

Kinect kinect;

void setup() {
 kinect = new Kinect(this);
 kinect.start();
}

void draw() {

}


void stop() {
 kinect.quit();
 super.stop(); 
}

Varicelle

Fait deux choses:

  1. capte et renvoie l'image formée par la Kinect
  2. contrôle l'orientation angulaire verticale de la kinect par l'intermédiaire de la souris (kinect.tilt)

NB: il s'agit aussi de tester la caméra infrarouge. Essayez avec une télécommande de télé ou une led infrarouge quelconque

import librarytests.*;
import org.openkinect.*;
import org.openkinect.processing.*;

Kinect kinect;

void setup() {
  size(640,480);  //standard kinect screen
 kinect = new Kinect(this);
 kinect.start();
 kinect.enableIR(true);
}

void draw() {
  PImage img = kinect.getVideoImage();
  image(img,0,0);
}

void mouseMoved() {
 float t = map(mouseY, 0,height,30,-30);
 println(t);
 kinect.tilt(t);
}

void stop() {
 kinect.quit();
 super.stop(); 
}

Le plus proche

Repère le point le plus proche de la Kinect, et le marque d'un rond rouge, plus ou moins gros selon la distance.

import librarytests.*;
import org.openkinect.*;
import org.openkinect.processing.*;

Kinect kinect;

void setup() {
  size(640, 480);
 kinect = new Kinect(this);
 kinect.start();
 kinect.enableDepth(true);
}

void draw() {
  int closestValue = 4096;
  int closestIndex = -1;
  
  // draw the raw image
  int[] rawDepth = kinect.getRawDepth();
  
  for (int i=0; i <640*480; i++) {
    if (rawDepth[i] > 0 && rawDepth[i] < closestValue) {
      closestValue = rawDepth[i];
     closestIndex = i; 
    }
  }
  
  image(kinect.getDepthImage(),0,0,640,480);
  
  if (closestIndex > -1) {
    fill(255,0,0);
    ellipse(closestIndex % 640, closestIndex / 640, closestValue*0.1, closestValue*0.1);
  
  }
}

void stop() {
 kinect.quit();
 super.stop(); 
}

Le stage de mars-avril 2012 aux ac de l'Université de Genève

Le fil rouge prévu

le 27 mars 2012

  • Exemples d'utilisation de la kinect dans les arts électroniques et numériques
    • Emoshan, voir l'applet web publiée sous coaltar.ch;
    • et autres exemples (voir aussi le paragraphe documentaire ci-dessous).
  • Mise en place de l'IDE sous Processing, les principales librairies de ce langage disponibles à ce jour
  • Initiation aux principales données accessibles à travers la kinect:
    • l'image vidéo rgb;
    • la Depth Image (mesure de distance et reconnaissance de proximité par IR en 2D);
    • les Point Clouds (nuages de points IR, la 3D et ses applications interactives);
    • la reconnaissance du corps et ses mouvements - openNI et les Skeleton Data.

le 3 avril 2012

  • Projets à réaliser en cours de soirée, quelques pistes:
    • tirant parti de la Depth Image, le crayon invisible et les sélecteur d'images;
    • tirant parti du Point Cloud, le clavier virtuel;
    • tirant parti des Skeleton Data, l'accordéon virtuel et la danse comme instrument de musique
    • et les projets personnels proposés par les stagiaires.

Le code étudié au cours de l'atelier

(sera mis en ligne à l'issue de celui-ci).

Documentation

Processing et les librairies gérant la kinect

sites, blogs, réseaux sociaux

ressources bibliographiques, articles, sites