miércoles, 24 de noviembre de 2010

Primer Acercamiento a la Plataforma OpenCV Unida a Processing

Después de mucho leer sobre estos programas y las posibilidades de nos brindan para Tiliin, he decidido enfrentarme a ellos para observar su funcionamiento e intentar escribir algo de código y entenderlo. Después de revisar tutorías, encontré las líneas que sirven para reconocimiento de video en tiempo real.
Las primeras líneas de código que pude escribir para esto, después de buscar para qué servían y entenderlas y asumir su estructura fueron las siguientes.

import hypermedia.video.*;        //   Importación de la biblioteca OpenCV
OpenCV opencv;                    //  Crea un nuevo objeto OpenCV
void setup()
{
   size( 320, 240 );
   opencv = new OpenCV( this );    //  Inicializa el objeto OpenCV
  opencv.capture( 320, 240 );     // abre una secuencia de captura de vídeo
 }
void draw()
{
   opencv.read();                  //  Agarra un fotograma de la cámara
 image( opencv.image(), 0, 0 );  //  Muestra la imagen en el buffer de OpenCV a la pantalla

}


Esta es una estructura muy básica y simple que nos perite tener un reconocimiento de cámara, y almacenar una imagen en el buffer de la biblioteca de imágenes de OpenCV, de allí se parte para colocar mas funciones que pueden ser aplicadas a la imagen como tal.


Aquí ya un reconocimiento con algunas funciones permitidas



import hypermedia.video.*;        

 OpenCV opencv;                    
PImage trailsImg;                 
int hCycle;                       

void setup()
{

  size( 320, 240 );

  opencv = new OpenCV( this );   
  opencv.capture( 320, 240 );     
  trailsImg = new PImage( 320, 240 );  
  hCycle = 0;                     
}

void draw()
{

  opencv.read();                 
  PImage camImage;                
  camImage = opencv.image();      

  opencv.absDiff();           
  opencv.convert( OpenCV.GRAY );  
  opencv.blur( OpenCV.BLUR, 3 ); 
  opencv.threshold( 20 );

  trailsImg.blend( opencv.image(), 0, 0, 320, 240, 0, 0, 320, 240, SCREEN );

  colorMode(HSB);                 
  tint(color(hCycle, 255, 255));  
  image( trailsImg, 0, 0 );  
  noTint();                      
  colorMode(RGB);              

  blend( camImage, 0, 0, 320, 240, 0, 0, 320, 240, SCREEN );

  opencv.copy( trailsImg );      
  opencv.blur( OpenCV.BLUR, 4 ); 
  opencv.brightness( -20 );       
  trailsImg = opencv.image();    

  opencv.remember();         

  hCycle++;                    
  if (hCycle > 255) hCycle = 0;   
}

No hay comentarios:

Publicar un comentario