Codigo

Este fue el resultado en el código, después de una búsqueda en páginas de internet que me ayudaran con el valor que me daban los array y éste me encendiera mis leds, probando primero con el código en arduino y mouse, y en processing con presencia,


import processing.video.*;  // MAC
import processing.serial.*;
import cc.arduino.*;


Arduino arduino;


Capture cam;                            // MAC
PImage imgref;
PImage imgout;
PImage imgmask;//para menos ruido en la imagen


color ca,cb,ct;
float ra,ga,ba;
float rb,gb,bb;
float rt,gt,bt;


int n = 3; //numero de subregiones de la img


float umbral;
float[] area = new float [n]; //el array depende el la variable n
float[] cmx = new float [n];
float[] cmy = new float [n];


void setup() {


  size(800,600);


  cam = new Capture(this, 320, 240);      // MAC 
  
  imgref = createImage(cam.width,cam.height,RGB); 
  imgout = createImage(cam.width,cam.height,RGB);
  imgmask = createImage(cam.width,cam.height,RGB);

  arduino = new Arduino (this, Arduino.list()[0], 57600);
  
  //entrada de leds
  arduino.pinMode (9,Arduino.OUTPUT); 
  arduino.pinMode (10,Arduino.OUTPUT); 
  arduino.pinMode (11,Arduino.OUTPUT);
}


void draw() {
  
  umbral = map(mouseX,0,width,0,256);


  if (cam.available() == true) {
    
    cam.read();      
    transformar();
    
    imgmask.filter (ERODE); // para tener mejor definicion  de la sombras
    imgmask.filter (DILATE );
    imgmask.filter(BLUR,5);
    
    image(imgmask,0,0,width,height);  
    
 for (int k=0; k++){
   
   if (area[k] !=0){
     stroke(255,0,0);
     fill(255,0,0);
     rect(map(cmx[k],0,cam.width,0,width),map(cmy[k],0,cam.height,0,height),7,7);// calcula centro de masa
     println(area );
     
     //variables para encendido leds blanco 
    if (area[k]< 88) {
    arduino.digitalWrite (9,Arduino.HIGH); 
     delay (10000);
    } else {
    arduino.digitalWrite(9,Arduino.LOW); 
    delay (500);
    }
    //AZUL
    if (area[k] > 76) {
    arduino.digitalWrite(10,Arduino.HIGH); 
    delay (10000);
   }else{
   arduino.digitalWrite(10,Arduino.LOW);
   delay (500);
   //verde
   if (area[k] < 93) {
  arduino.digitalWrite(11,Arduino.HIGH); 
   delay (10000);
  }else{
  arduino.digitalWrite(11,Arduino.LOW);
  delay (500);


              }
           }        
        }  
     }
  }
}




void transformar() {
  
  for (int k=0; k++){
    
    area [k] = 0;
    cmx [k] = cmy [k] = 0;
  
  for (int j=0;j
    for (int i=k*cam.width/n;i<(k+1)*cam.width/n;i++) { //el width esta divido en n regiones y este es el algoritmo para hacer la division en Y para cada region(donde empieza y donde termina cada region)
    
      ca = cam.get(i,j);
      ra = red(ca);
      ga = green(ca);
      ba = blue(ca);
      
      cb = imgref.get(i,j);
      rb = red(cb);
      gb = green(cb);
      bb = blue(cb);


      rt = abs(ra - rb);
      gt = abs(ga - gb);
      bt = abs(ba - bb);
      
      if ( (rt+gt+bt)/3 < umbral ) {
        rt = gt = bt = 0;
      } else {
        rt = gt = bt = 255;
        area[k] ++;
        cmx[k] += i;
        cmy[k] += j;
      }
        
      ct = color(rt,gt,bt);
      imgmask.set(i,j,ct);


    }
  }
  
    if (area[k] != 0) {
      cmx[k] = cmx[k]/area[k];
      cmy[k] = cmy[k]/area[k];
    } else {
      cmx[k] = cmy[k] = 0;
    }
  
    area[k] = 100*area[k]/(imgmask.width/n*imgmask.height); //normailizaciòn para cada subimagen


  }
}


void keyPressed() {
  
  if (key==' ') {
    imgref.copy(cam,0,0,cam.width,cam.height,0,0,imgref.width,imgref.height);
  }
  
}


este código es de intensidad del leds según la posición del mouse, la idea seria poder organizarlo para que la función del mouse la realice la presencia del espectador,



import processing.serial.*;
import cc.arduino.*;


Arduino arduino;


void setup() {
  
  size(800,600); //tamaño de la pantalla

  arduino = new Arduino(this, Arduino.list()[0], 57600);    // MAC
  
   arduino.pinMode(8, Arduino.OUTPUT);
   arduino.pinMode(9, Arduino.OUTPUT);
   arduino.pinMode(10, Arduino.OUTPUT);
   arduino.pinMode(11, Arduino.OUTPUT);
}


void draw() {
  
 arduino.analogWrite (8,int(map(mouseX,0,width,0,255)));
 arduino.analogWrite (9,int(map(mouseX,0,width,0,255)));
 arduino.analogWrite (10,int(map(mouseX,0,width,0,255)));
 arduino.analogWrite (11,int(map(mouseX,0,width,0,255)));
    
}