cè qualcuno che ha utilizzato openCV?

IA e Sistemi di Visione Artificiale per la Robotica

cè qualcuno che ha utilizzato openCV?

Postby Grifo » 20 Jul 2011, 20:32

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
Grifo
 
Posts: 6
Joined: 20 Jul 2011, 20:25

Re: cè qualcuno che ha utilizzato openCV?

Postby tubincolo » 01 Aug 2011, 08:26

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 );
}
tubincolo
 
Posts: 18
Joined: 19 Jun 2011, 11:16

Re: cè qualcuno che ha utilizzato openCV?

Postby EuPower » 17 Nov 2012, 15:08

La libreria per la comunicazione seriale con header Tserial.h è disponibile online oppure è una creazione di deluca ?
EuPower
 
Posts: 2
Joined: 16 Nov 2012, 17:43


Return to Intelligenza & Visione Artificiale

Who is online

Users browsing this forum: No registered users and 2 guests

cron