stanlenoan
Messages postés1Date d'inscriptionmercredi 25 janvier 2006StatutMembreDernière intervention16 février 2006
-
16 févr. 2006 à 15:58
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
17 févr. 2006 à 09:47
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;
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 17 févr. 2006 à 09:47
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.
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 16 févr. 2006 à 17:37
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