Trouver le centre du cercle

[Résolu]
Signaler
Messages postés
1
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
16 février 2006
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
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 );

2 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Pourtant c'est aussi a ca que j'ai pensé, faire la moyenne des points.
Mais je suis désolé, ton code est illisible. Et je comprends pas
pourquoi tu calculs la moyenne en deux temps. Une seule boucle suffit.
Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
99
Une autre approche (je n'ai pas testé): Etablir les coordonnées des diamètres horizontaux et verticaux.

Lors du parcours de ton image, quand tu "rentre" dans ton cercle, tu as les coordonnées du point d'entrée. Idem pour la sortie. Il suffit après de garder le Xmin, Xmax, Ymin et Ymax.

Ton centre se trouvera alors (approximativement) en (Xmax-Xmin)/2 et (Ymax-Ymin)/2

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage