Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2017-12-09 11:22:45 Reconnaissance faciale avec Open CV

Pharaonn
nouveau membre
Date d'inscription: 2017-12-09
Messages: 1

Reconnaissance faciale avec Open CV



Bonjour,

il y a un programme que j'aimerais réaliser à l'aide de la reconnaissance faciale utilisant la librairie OpenCV. J'aimerais qu'il y ai une image A affichée (qui peut être une vidéo) et lorsqu'un visage est détectée à moins d'1m, l'image A se transforme progressivement en une image B donnée.

Jusque là j'ai réussi à faire dire au programme qu'il faut changer d'image lorsque le visage est détecté mais j'aimerai que :
1) il ne détecte le visage que lorsqu'il est proche (1 mètre environ maximum)
2) il fasse la transition entre les deux images de manière très progressive (peut-être en fusionnant les deux fichiers avec un jeu d'opacité)

Je débute tout juste sur Processing et encore plus sur OpenCV alors si quelqu'un a la solution ou peut m'aider ce serait formidable !


Voilà mon code très bordélique, désolée, (et d'ailleurs, mes images sont zoomées alors qu'elles sont de la dimension de mon écran, je n'ai pas trop compris mais bon, c'est vraiment pas le plus gros problème) :

import gab.opencv.*; 
import processing.video.*; 
import java.awt.Rectangle;
 PImage image;
 PImage flou;
 PImage nette;
Capture cam; 
OpenCV opencv; 
Rectangle[] faces;
 
void setup() { 
  fullScreen(); 
  background (0, 0, 0); 
  cam = new Capture( this, 640, 480, 30); 
  cam.start(); 
  opencv = new OpenCV(this, cam.width, cam.height); 
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
  image=loadImage("image.jpg");
  nette=loadImage("nette.jpg");
  flou=loadImage("flou.jpg");
}
 
void draw() { 
  opencv.loadImage(cam); 
  faces = opencv.detect(); 
  image(cam, 0, 0); 
 
  if (faces!=null) { 
    for (int i=0; i< faces.length; i++) { 
      image(nette,0,0);
      noFill(); 
      stroke(255, 255, 0); 
      strokeWeight(10);   
      rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
    }
  } 
  if (faces.length<=0) { 
    textAlign(CENTER); 
    fill(255, 0, 0); 
    textSize(56); 
    println("no faces");
    image(flou,0,0);
    text("UNDETECTED", 200, 100);
  }
}
 
void captureEvent(Capture cam) { 
  cam.read();}

Merci beaucoup !

Dernière modification par Pharaonn (2017-12-09 11:24:06)

Hors ligne

 

#2 2017-12-09 11:40:50 Re : Reconnaissance faciale avec Open CV

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Reconnaissance faciale avec Open CV



Bonjour,

Si tu veux que l'on t'aide efficacement, il faut joindre les images avec ton code. L'idéal étant de compresser tout le dossier.

Pour te donner une piste, on ne peut connaître les distance avec OpenCV, cependant tu peux avoir une dimension seuil du rectangle. Si le rectangle est supérieur à une table donnée, le visage est donc proche de l'objectif de la caméra et donc la transition opère.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024