Detección de Rostro y Ojos con Processing

Detección de Rostro y Ojos con las técnicas de Visión Computarizada. OpenCV con Processing 2.2.
Se utilizan transparencias para la sustitución y el enmascaramiento de las partes del rostro afectadas con las coordenadas bidireccionales X, Y.  













Código fuente de Processing.

import gab.opencv.*;
import processing.video.*;
import java.awt.*;

Capture video;
OpenCV opencv;

//Imágen 
PImage logo;
import java.util.Iterator;
SistemaDeParticulas sdp;
PImage img;
PGraphics pg;

public int cuenta = 2;
public float backgrnd = 0, sonido = 900.5, colF = 0, alfaF = 8.0,
             grosor = 9.18, alfa = 13, 
             colores = 34.74, posicionX, posicionY 
             ;

//letrero Macuilero
float angle = 0.0, speed = 0.49, rad = 100, muevete = -200;
PFont fontA;


void setup() {
  fontA = loadFont("Calibri-Light-48.vlw");
  textFont(fontA, 48);
  

  //logo = loadImage("Guajolote.png"); 
  //logo = loadImage("coyolxauhqui2Chica.png");
  //logo = loadImage("ojoCafe.png");
  //logo = loadImage("ojoGato1.png"); 
  logo = loadImage("anime-face.png");
  //logo = loadImage("ojoGato2.jpg");
  //logo = loadImage("6982.png");
  //logo = loadImage("IREM.png");
  //logo = loadImage("Patula.png"); 
  //logo = loadImage("rayos1.png"); 
  //logo = loadImage("beamVerde.png");
  //logo.resize(100, 60);//telcel
  //logo.resize(120, 120);//Guajolot
  //logo.resize(120, 70);//IREMCORP
  //logo.resize(80, 120); //Patul
  logo.resize(130, 130); //Rayos
  
  size(640, 480);
  video = new Capture(this, 640/2, 480/2);
  opencv = new OpenCV(this, 640/2, 480/2);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);
  //opencv.loadCascade(OpenCV.CASCADE_NOSE);   
  //opencv.loadCascade(OpenCV.CASCADE_MOUTH);  
  //opencv.loadCascade(OpenCV.CASCADE_EYE);
  video.start();
  
  
  
  
}




void draw() {
  

  ////////////////////////La OpenCV
  scale(2);
  opencv.loadImage(video);

  image(video, 0, 0 );

  noFill();
  stroke(0, 255, 0);
  strokeWeight(3);
  Rectangle[] faces = opencv.detect();
  println(faces.length);
  

  for (int i = 0; i < faces.length; i++) {
    //println(faces[i].x + "," + faces[i].y);
    //logo.draw(100, 100);
    //pushMatrix();
    //rotate(30);
    //image(logo, faces[i].x, faces[i].y ); //Patul
    //logo.resize(faces[i].width*2, faces[i].height*2);
    //image(logo, faces[i].x, faces[i].y); //Rayos
    
    logo.resize(145, 140); //Rayos
    image(logo, faces[i].x+0, faces[i].y+10); //Rayos
    
    //popMatrix();
    //image(logo, faces[i].x -120, faces[i].y - 70); //IREM
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);        
    
    
    //posicionX = faces[i].x - 50; 
    //posicionY = faces[i].y - 50;
    
    //sdp = new SistemaDeParticulas(0, new PVector(posicionX, posicionY));  
    //sdp.corre();
          
  //for(int p=0; p<15; p+=cuenta) {

    //blendMode(ADD);
    //blendMode(SUBTRACT);
    //blendMode(LIGHTEST);
    //blendMode(DARKEST);
    //blendMode(DIFFERENCE);
    //blendMode(EXCLUSION);
    //blendMode(MULTIPLY);
    //sdp.addParticula();
  //}  


  }
    
  

  

  macuilismo();

}

void captureEvent(Capture c) {
  c.read();
}

void keyPressed() {
  if (keyCode == ENTER) {
    saveFrame("miOpenCVLiveCam-####.png");
  }
}














Comentarios

Entradas populares de este blog

Estimación de pose con Posenet de Tensorflow.