Bonsoir, pour le principe je passe mon tour, mais pour la pratique il existe une très puissance librairies gratuite dev par Intel qui sert à faire du traitement d'image, et notamment du tracking de couleurs, de visages... Cette lib s'appelle OpenCV et il existe plusieurs plugin pour différents langages (Processing, OpenFramework, python...) ou sinon on coder direct en C\C++. C'est multiplateforme, on peut acquérir une image depuis une webcam ou un film vidéo etc.
A titre d'exemple voila le code sous Processing pour faire le traking de visage:
import hypermedia.video.*;
import java.awt.Rectangle;
OpenCV opencv;
// contrast/brightness values
int contrast_value = 0;
int brightness_value = 0;
void setup() {
size( 176*2,144*2 );
opencv = new OpenCV( this );
opencv.capture( 176, 144 ); // open video stream
opencv.cascade( OpenCV.CASCADE_FRONTALFACE_ALT ); // load detection description, here-> front face detection : "haarcascade_frontalface_alt.xml"
// print usage
println( "Drag mouse on X-axis inside this sketch window to change contrast" );
println( "Drag mouse on Y-axis inside this sketch window to change brightness" );
}
public void stop() {
opencv.stop();
super.stop();
}
void draw() {
// grab a new frame
// and convert to gray
opencv.read();
opencv.contrast( contrast_value );
opencv.brightness( brightness_value );
PImage couleur = opencv.image();
opencv.convert( GRAY );
// proceed detection
Rectangle[] faces = opencv.detect( 1.2, 2, OpenCV.HAAR_DO_CANNY_PRUNING, 40, 40 );
// display the image
image( couleur, 0, 0 );
image(opencv.image(),176,144);
// draw face area(s)
noFill();
stroke(255,0,0);
for( int i=0; i<faces.length; i++ ) {
rect( faces[i].x, faces[i].y, faces[i].width, faces[i].height );
rect( faces[i].x+176, faces[i].y+144, faces[i].width, faces[i].height );
}
}
/**
* Changes contrast/brigthness values
*/
void mouseDragged() {
contrast_value = (int) map( mouseX, 0, width, -128, 128 );
brightness_value = (int) map( mouseY, 0, width, -128, 128 );
}
-------
Robotiquement votre,
saq__d__aus