2009-06-09 8 views

Répondre

10

Vous pouvez obtenir le centre de masse dans la direction y en calculant d'abord le Moments. Alors le centre de masse est donné par yc = M01/M00, où M01 et M00 sont des champs dans la structure retournée par l'appel Moments.

Si vous voulez juste le centre du rectangle englobant, c'est aussi facile à faire avec BoundingRect. Cela vous renvoie un CvRect et vous pouvez juste prendre la moitié de la hauteur. Faites-moi savoir si ce n'est pas assez précis, j'ai un code d'échantillon quelque part que je peux déterrer pour vous.

+1

Troisièmement, vous pouvez calculer la coque convexe et son moment (qui est en fait la première étape interne dans BoundingRect). Quatrièmement, vous pouvez calculer le centre de masse des seuls pixels du contour (c'est-à-dire les pixels qui se trouvent exactement sur le contour). Toutes ces méthodes donneront des valeurs * différentes *, et leur utilité dépendra des besoins spécifiques de votre application. – rwong

+1

Le centre des points d'un contour n'est pas le centre de gravité. 99% des points de contour peuvent être concentrés dans une petite zone à forte variation et seulement 3 couvrent le reste d'une forme régulière plus grande. –

+0

Les moments pour un contour ne sont pas calculés en additionnant les points du contour mais en utilisant le théorème de Green. Les résultats ne correspondent pas exactement au calcul du centre de masse pour le contour rempli dans l'image, mais sont similaires, et ne sont en aucun cas biaisés par une irrégularité dans l'étalement du contour comme vous le suggérez. – buzjwa

-2

Je ne sais pas exactement ce que OpenCV est, mais je dirais ceci:

Le groupe sélectionné de pixels a une largeur maximale en un point - w - disons que la zone a w colonnes verticales de pixels. Maintenant, je pondérerais les colonnes en fonction du nombre de pixels que contient la colonne, et j'utiliserais ces colonnes-colonnes pour déterminer le point central horizontal.

Le même algorithme pourrait également fonctionner pour le X Center.

+0

Pas besoin de le faire vous-même quand il y a plusieurs façons de le faire. – Kiv