Aller au contenu


Photo
- - - - -

Détecteur de visages


  • Veuillez vous connecter pour répondre
1 réponse à ce sujet

#1 Emeth

Emeth

    Membre

  • Membres
  • 17 messages
  • Gender:Female

Posté 09 novembre 2010 - 02:23

Bonjour à tous, :)

Je me posais comme question, par simple curiosité au niveau de la programmation, si vous aviez une idée de comment on pouvait s'y prendre pour qu'un algorithme puisse détecter un visage humain - et plus particulièrement qu'il puisse repérer où se trouvent les yeux, narives et la bouche.

Emeth.
« Il ne faut pas craindre la machine qui se rebelle contre l'homme, mais l'homme qui lui a donné goût à cela. »

#2 saq__d__aus

saq__d__aus

    Nouveau membre

  • Membres
  • 6 messages

Posté 09 novembre 2010 - 10:07

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




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users