Bonjour à tous,
Je travaille sur un programme de traitement d'images venant d'une webcam, à partir de la bibliothèque openCV.
Pour le moment je veux suivre le mouvement d'une balle de ping pong sur un fond noir. Après traitement j'obtient un contour de la bille sans bruit ailleur sur l'image.
Mon problème est de trouver le centre de ce pseudo cercle pour le tracer, et suivre le centre de la ball.
J'ai pensé à plusieurs solution telle que moyenner les abscisses d'une part et les ordonnées d'autre part de tous les points du contours pour trouver le centre; mais mon codes bien que compilé sans erreur n'aboutit à rien si ce n'est un cercle en plein milieu de l'écran, et je perds l'image instantané...
Voilà mon morceau de code, pourriez vous me dire ce qui cloche???
planes[1] est une image IplImage
CvPoint* tab;
tab = (CvPoint*)malloc( 320*240*sizeof(CvPoint) );
int s=0;
//Algo pour trouver tous les points non noir.
for(i=0 ; i<240 ; i++)
{
for (j=0 ; j<320 ; j++)
{ if (planes[1]->imageData[j+i*320]=255u)
{ tab[s]=cvPoint(j,i);
s=s+1;
}
else s=s;
}
}
//planes[1]->imageData[100+100*320]=255;
int xaverage, yaverage;
for (i=0 ; i<s ; i++)
{ xaverage=xaverage+tab[i].x;
yaverage=yaverage+tab[i].y;}
xaverage=xaverage/s;
yaverage=yaverage/s;
cvCircle( planes[1], cvPoint(xaverage,yaverage), 20, CV_RGB(0,255,0), 1 );