Page 1 of 1

cè qualcuno che ha utilizzato openCV?

PostPosted: 20 Jul 2011, 20:32
by Grifo
salve sono nuovo e devo fare i complimenti per i lavori che l'autore ha realizzato, specie per quanto riguarda la robotica
e i sistemi di intelligenza artificiale.
mi piacerebbe sapere se qualcuno ha mai utilizzato le openCv per riconoscere un oggetto, in particolare
il viso, e seguirlo con una telecamera. (ho visto che è possibile farlo)

Se si, chiedo all' autore del sito, o altri, se mi potete aiutare almeno nelle prime fasi:
cosa occorre
librerie
ed altro.

saluti

Re: cè qualcuno che ha utilizzato openCV?

PostPosted: 01 Aug 2011, 08:26
by tubincolo
Grifo wrote:salve sono nuovo e devo fare i complimenti per i lavori che l'autore ha realizzato, specie per quanto riguarda la robotica
e i sistemi di intelligenza artificiale.
mi piacerebbe sapere se qualcuno ha mai utilizzato le openCv per riconoscere un oggetto, in particolare
il viso, e seguirlo con una telecamera. (ho visto che è possibile farlo)

Se si, chiedo all' autore del sito, o altri, se mi potete aiutare almeno nelle prime fasi:
cosa occorre
librerie
ed altro.

saluti


Ecco un esempio di come si può fare un riconoscimento dei visi con OpenCV utilizzando
il metodo dei classificatori "HaarClassifierCascade".
Avendo un file di classificazione dei visi o di altre parte del corpo (generato utilizzando circa 10000 immagini di visi diversi su altrettanti sfondi per il background) si può usare con opencv questo metodo. Il sistema di sviluppo utilizzato è il visual studio 6 , in particolare il "C". Nel programma ho integrato anche la gestione della porta seriale attraverso la quale possone essere trasmesse le coordinate del riquadro che racchiude il viso riconosciuto.

NB.Prima di iniziare a smanettare con la visione artificiale, vi consiglio di dare un'occhiata a questa presentazione:
http://www.delucagiovanni.com/files/Computer%20Vision_file/frame.htm

Code: Select all
/*********************************************************
 *         Face Tracking by G. De Luca 19-02-2011
 *********************************************************/

#include <stdio.h>
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "conio.h"
#include "Tserial.h"

CvHaarClassifierCascade *cascade;
CvMemStorage               *storage;
Tserial *com;

void detectFaces( IplImage *img );
 
//-------------------------------- main program ---------------------
int main( int argc, char** argv )
{   
    com = new Tserial();
   {
   com->connect("COM11", 115200, spNONE); //apri la com
   
   CvCapture *capture;
    IplImage  *frame;
    int       key;
 
    //char      *filename = "occhi.xml";
    char      *filename = "haarcascade_frontalface_default.xml";

    /* load the classifier
    note that I put the file in the same directory with this code */
    cascade = ( CvHaarClassifierCascade* )cvLoad( filename, 0, 0, 0 );
 
    /* setup memory buffer; needed by the face detector */
    storage = cvCreateMemStorage( 0 );
 
    /* initialize camera */
    capture = cvCaptureFromCAM( 0 );
 
    /* always check */
    //assert( cascade && storage && capture );
 
    /* create a window */
    cvNamedWindow( "video", 1 );
 
    while( key != 'q' ) {
        /* get a frame */
        frame = cvQueryFrame( capture );
 
        /* always check */
      
      if( !frame )             
         break;
 
        /* 'fix' frame */
        cvFlip( frame, frame, -1 );
        frame->origin = 0;
 
        /* detect faces and display video */
        detectFaces( frame );
 
        /* quit if user press 'q' */
        key = cvWaitKey( 10 );     
    }
 
    /* free memory */
    cvReleaseCapture( &capture );
    cvDestroyWindow( "video" );
    cvReleaseHaarClassifierCascade( &cascade );
    cvReleaseMemStorage( &storage );
   
   com->disconnect();
   delete com;
    com = 0;

 }
    return 0;
}
//-----------------------------------------------------
void detectFaces( IplImage *img )
{
    int i;
    char OutStr[256];

    /* detect faces */
    CvSeq *faces = cvHaarDetectObjects(
            img,
            cascade,
            storage,
            1.1,
            3,
            0 /*CV_HAAR_DO_CANNY_PRUNNING*/,
            cvSize( 40, 40 ) );  //40, 40
   
    /* for each face found, draw a red box */      
   for( i = 0 ; i < ( faces ? faces->total : 0 ) ; i++ )
   {
        CvRect *r = ( CvRect* )cvGetSeqElem( faces, i );
              
        cvRectangle( img,
                     cvPoint( r->x, r->y ),
                     cvPoint( r->x + r->width, r->y + r->height ),
                     CV_RGB( 255, 0, 0 ), 1, 8, 0 );

      //converti i valori in stringa e trasmessi sulla porta seriale
      sprintf(OutStr, "(FOUND,x,%d,%d,%d,%d)\r\n", r->x, r->y,r->x + r->width,r->y + r->height);             
      com->sendArray(OutStr, strlen(OutStr));         
    }
 
    /* display video */       
   cvShowImage( "video", img );
}

Re: cè qualcuno che ha utilizzato openCV?

PostPosted: 17 Nov 2012, 15:08
by EuPower
La libreria per la comunicazione seriale con header Tserial.h è disponibile online oppure è una creazione di deluca ?