sábado, 17 de abril de 2010

OpenCV con C xD - Parte 02

n_n al comentar cvSetImageROI no limitamos el area a procesar.

#include <stdio.h>
/*Algoritmos principales*/

#include "cv.h"
/*GUI y Video*/

#include "highgui.h"


CvHaarClassifierCascade *cascade_cara;
CvHaarClassifierCascade *cascade_ojo;
CvMemStorage *storage;


void ReconocerRostroOjos(IplImage *imagen);


/*--------------------------------------------------------------*/

int main(){
    CvCapture *captura = 0;  
    IplImage *imagen;
    char *cara = "haarcascade_frontalface_default.xml";
    char *ojo = "haarcascade_eye.xml";
    int key=0;

    /* Cargando el clasificador de rostro */

    cascade_cara = (CvHaarClassifierCascade*)cvLoad(cara, 0, 0, 0);


    /* Cargando el clasificador de ojos */

    cascade_ojo = (CvHaarClassifierCascade*)cvLoad(ojo, 0, 0, 0);


    /*Declarando storage para detectar los ojos */

    storage = cvCreateMemStorage(0);

 
    captura = cvCaptureFromCAM( 0 ); 
    if ( !captura ) {
      fprintf( stderr, "No se encuentra la  webcam!\n" );
      return 1;
    } 
 
    /* Crea una ventana */

    cvNamedWindow("n_n", CV_WINDOW_AUTOSIZE);

    while( key != 'q' ) {
   imagen = cvQueryFrame( captura );
      if( !imagen ) break;  
      /* Reconocer rostro y ojos*/

      ReconocerRostroOjos(imagen);
      cvShowImage("n_n", imagen);
  
      if( cvWaitKey( 10 ) >= 0 )
        break;
   }  
    /*Deja de capturar*/
    cvReleaseCapture(&captura);
    cvDestroyWindow("n_n");
    return 0;
}


void ReconocerRostroOjos(IplImage *imagen){

int i;
/*Reconocer rostro*/ 
CvSeq *faces = cvHaarDetectObjects(imagen, cascade_cara, storage,1.1, 2,0,cvSize(40, 40));
 
/* Salgo si se encuentra*/

if (faces->total == 0) return;

/* Dibujar un rectangulo */

CvRect *r = (CvRect*)cvGetSeqElem(faces, 0);
cvRectangle(imagen,cvPoint(r->x, r->y),cvPoint(r->x + r->width, r->y + r->height),CV_RGB(255, 0, 0), 1, 8, 0);
/* Limpio el buffer para trabajar con la siguiente imagen*/

cvClearMemStorage(storage);


/*Posicion de los ojos o region de interes dentro de la imagen principal*/

//cvSetImageROI(imagen, cvRect(r->x, r->y + (r->height/5.5), r->width, r->height/3.0));


/* Reconocer los ojos*/

CvSeq* ojos = cvHaarDetectObjects(imagen, cascade_ojo, storage,1.1, 2,0,cvSize(20, 20));


 /* Dibujar un circulo */

 for( i = 0; i < (ojos ? ojos->total : 0); i++ ) {
    r = (CvRect*)cvGetSeqElem( ojos, i );
    cvCircle( imagen,cvPoint(r->x + r->width*0.5, r->y + r->height*0.5),20, cvScalar(0,255,0), 1);
  
 }
  
cvResetImageROI(imagen);
} 
 
Gran parte de la documentacion que me ayudo a esto, son estos link's: 
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html

http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/

viernes, 16 de abril de 2010

OpenCV con C xD - Parte 01

uff hace cuanto que no posteaba !! eso por distracciones mentales emocionales ._. en fin un programa que ise con opencv  n_n.

#include "stdio.h"
#include "cv.h"
#include "highgui.h"

void ReconocerRostro(IplImage* img);

CvHaarClassifierCascade *cascade_cara;

CvHaarClassifierCascade *cascade_ojos;
CvMemStorage  *storage;

main(){
 CvCapture *capture = 0;
 IplImage  *frame = 0;

 int       key = 0;
 CvFont font;
 
 capture = cvCaptureFromCAM( 0 );
 
 if ( !capture ) {

   fprintf( stderr, "No se encuentra la  webcam!\n" );
   return 1;

 }


 cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 1, CV_AA);  
 cvNamedWindow( "Ventanita", CV_WINDOW_AUTOSIZE );  
 
 
 while( key != 'q' ) {  

 frame = cvQueryFrame( capture );
 cvPutText(frame, "n_n", cvPoint(5, 270), &font, cvScalar(255, 255, 255, 0)); 


  if( !frame ) break;

     cvShowImage( "Ventanita", frame );
     ReconocerRostro(frame); 

        if( cvWaitKey( 10 ) >= 0 )
        break;

    }


    cvReleaseCapture( &capture );
    cvDestroyWindow( "Ventanita" );
    return 0;

}


void ReconocerRostro(IplImage* img){
 
} 
 
Para compilar ^^
#!/bin/bash
aux=cara
g++ $aux.c -o $aux  -I /usr/include/opencv -L /usr/lib   -lm -lcv -lhighgui -lcvaux 

IRC

#freenode->#usljujuy

Seguidores

Eventos n_n

Tira Ecol Nano,Bilo y Luca