11
votes

OpenCV 2 CentroidIDE

J'essaie de trouver le centroïde d'un contour, mais j'ai du mal à mettre en œuvre le code exemple en C ++ (OPENCV 2.3.1). Quelqu'un peut-il m'aider?


0 commentaires

4 Réponses :


16
votes

Pour trouver le centroïde d'un contour, vous pouvez utiliser la méthode des moments. Et les fonctions sont implémentées OPENCV.

Consultez ces moments fonction ( central et spatial moments ).

Sous Code est extrait de Tutoriel Docs OpenCV 2.3. Code complet ici.


xxx

aussi Découvrez ce Sof , bien qu'il soit en python, ce serait utile. Il trouve tous les paramètres d'un contour.


0 commentaires

1
votes

Vous pouvez également utiliser les algorithmes suivants pour trouver un Centroid:

//pseudo-code:

Rect bRect = Imgproc.boundingRect(array_points);

centroid.x = bRect.x + (bRect.width / 2);
centroid.y = bRect.y + (bRect.height / 2);


2 commentaires

Cela ne trouve pas le Centroid d'un contour. Le premier, par exemple, n'est qu'une moyenne des points de coin.


Oui, j'aurais dû mentionner que c'est une approximation. Utile si vous avez seulement besoin d'un résultat approximatif.



6
votes

Si vous avez le masque de la zone de contour, vous pouvez trouver l'emplacement Centroid comme suit: xxx

Cette approche est utile lorsque l'on a le masque mais pas le contour. Dans ce cas, la méthode ci-dessus est calculellement plus efficace contre l'utilisation de CV :: FindContours (...) puis trouvant centre de masse.

Voici la source


1 commentaires

Comment obtenez-vous un masque de la zone de contour, étant donné un contour?



1
votes

Compte tenu des points de contour et la formule de Wikipedia , le Centroide peut être efficacement calculé comme ceci: xxx

Remarque:

  • Cette formule fonctionne avec des sommets donnés à la fois dans le sens des aiguilles d'une montre et ordre dans le sens antihoraire.
  • Si les points ont des coordonnées entier, il Peut-être pratique d'adapter le type de p et de la valeur de retour à point2f ou point2d , et d'ajouter une distribution à float ou double au dénominateur dans la déclaration de retour.

0 commentaires