vector<Detection> NonMaximumSuppression::eliminateRedundantDetections(vector<Detection> candidates) const { if (overlapThreshold == 1.0) // with this threshold, there would be an endless loop - this check assumes distinct bounding boxes return candidates; sortByScore(candidates); vector<vector<Detection>> clusters = cluster(candidates); return getMaxima(clusters); }
int deplacement_zero() { #ifdef DEBUG2 printf("entrer deplacement_zero odile.c\n"); #endif #ifdef DEBUGIA1 struct timeval start,stop,res; #endif open_capture(0,160,120); if ( !capture ) { fprintf( stderr, "ERROR: capture is NULL \n" ); getchar(); return -1; } //recuperation d une premiere image pour avoir les dimensions IplImage* frame = cvQueryFrame( capture ); //recuperation des dimensions de l image CvSize taille = cvGetSize(frame); int tailleInt = taille.width * taille.height; //creation des image et matrices intermediaires IplImage* frameGray = cvCreateImage(taille,8,1); float* matriceGradX = malloc(sizeof(float)*tailleInt); float* matriceGradY = malloc(sizeof(float)*tailleInt); float* matriceHarris= malloc(sizeof(float)*tailleInt); float** tabHarris = (float **)malloc(sizeof(float*)*_NBHARRIS); float** tabHarrisPrec = (float **)malloc(sizeof(float*)*_NBHARRIS); char * imageData; int j; for(j=0;j<_NBHARRIS;j++) { tabHarris[j]=(float*)malloc(sizeof(float)*3); } for(j=0;j<_NBHARRIS;j++) { tabHarrisPrec[j]=(float*)malloc(sizeof(float)*3); } vecteur *tabVect = (vecteur*) malloc(sizeof(vecteur)*_NBHARRIS); vecteur vecteurMoy; vecteurMoy.x = 0; vecteurMoy.y=0; int nbVect = 0; while(status == MODE_AUTO) { #ifdef DEBUGIA1 gettimeofday(&start,NULL); #endif //Recuperation de l image de la camera frame = cvQueryFrame( capture ); if ( ! frame ) { fprintf( stderr, "ERROR: pas d'image\n" ); return -1; } imageData = frameGray->imageData; //Passage en niveau de gris RGBTOGRAY_1CANAL(frame, frameGray); //Sobel pour les gradients SobelHV(imageData,taille.height, taille.width, matriceGradX, matriceGradY); //Detecteur de Harris harris(matriceHarris, matriceGradX, matriceGradY, tailleInt); //Maxima de Harris getMaxima(matriceHarris, taille.height, taille.width, tabHarris, _NBHARRIS); //Matching des points pour trouver les vecteurs nbVect = calcul_vecteur_interet(tabHarrisPrec, tabHarris, _NBHARRIS, _SEUIL_DISTANCE, tabVect); //Moyenne des vecteurs calcul_moyenne_vecteur(tabVect, nbVect,&vecteurMoy); for(j=0;j<_NBHARRIS;j++) { tabHarrisPrec[j][0] = tabHarris[j][0]; tabHarrisPrec[j][1] = tabHarris[j][1]; tabHarrisPrec[j][2] = tabHarris[j][2]; } #ifdef DEBUGIA1 printf("nbVecteur Match = %d \nVecteur moyen = %d %d\n",nbVect,vecteurMoy.x,vecteurMoy.y); gettimeofday(&stop,NULL); timersub(&stop, &start, &res); printf("time Harris= %d %d\n",(int)res.tv_sec, (int)res.tv_usec); #endif pilote_IA(vecteurMoy,1000, 255); } cvReleaseCapture( &capture ); #ifdef DEBUG2 printf("FIN deplacement_zero odile.c\n"); #endif return 0; }
int prise_photo() { #ifdef DEBUG2 printf("entrer prise_photo odile.c\n"); #endif struct timeval start,stop,res; open_capture(0,160,120); if ( !capture ) { fprintf( stderr, "ERROR: capture is NULL \n" ); getchar(); return -1; } //recuperation d une premiere image pour avoir les dimensions IplImage* frame = cvQueryFrame( capture ); //recuperation des dimensions de l image CvSize taille = cvGetSize(frame); int tailleInt = taille.width * taille.height; //creation des image et matrices intermediaires IplImage* frameGray = cvCreateImage(taille,8,1); float* matriceGradX = malloc(sizeof(float)*tailleInt); float* matriceGradY = malloc(sizeof(float)*tailleInt); float* matriceHarris= malloc(sizeof(float)*tailleInt); float** tabHarris = (float **)malloc(sizeof(float*)*_NBHARRIS); char * imageData; char* buffer = (char*) malloc(sizeof(char)*20); int i=0,j; for(j=0;j<_NBHARRIS;j++) { tabHarris[j]=(float*)malloc(sizeof(float)*3); } while(i < 30) { //Recuperation de l image de la camera frame = cvQueryFrame( capture ); if ( ! frame ) { fprintf( stderr, "ERROR: pas d'image\n" ); return -1; } imageData = frameGray->imageData; gettimeofday(&start,NULL); //Passage en niveau de gris RGBTOGRAY_1CANAL(frame, frameGray); //Sobel pour les gradients SobelHV(imageData,taille.height, taille.width, matriceGradX, matriceGradY); //Detecteur de Harris harris(matriceHarris, matriceGradX, matriceGradY, tailleInt); //Maxima de Harris getMaxima(matriceHarris, taille.height, taille.width, tabHarris, _NBHARRIS); for(j=0;j<_NBHARRIS;j++) { Dessine_croix(imageData,taille.height, taille.width,tabHarris[j][1],tabHarris[j][0]); } if(i > 19){ sprintf(buffer,"image%d.jpg",i-19); cvSaveImage(buffer,frameGray,0); } i++; gettimeofday(&stop,NULL); timersub(&stop, &start, &res); printf("time Harris = %i,%d sec i= %d\n",(int)res.tv_sec, (int)res.tv_usec,i); } cvReleaseCapture( &capture ); exit(0); #ifdef DEBUG2 printf("sortie prise_photo odile.c\n"); #endif return 0; }