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? P>
4 Réponses :
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 ). P>
Sous Code est extrait de Tutoriel Docs OpenCV 2.3. Code complet ici. p>
aussi Découvrez ce Sof , bien qu'il soit en python, ce serait utile. Il trouve tous les paramètres d'un contour. P> p>
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);
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.
Si vous avez le masque de la zone de contour, vous pouvez trouver l'emplacement Centroid comme suit: 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 Voici la source p> p> CV :: FindContours (...) CODE> puis trouvant centre de masse. P>
Comment obtenez-vous un masque de la zone de contour, étant donné un contour?
Compte tenu des points de contour et la formule de Wikipedia , le Centroide peut être efficacement calculé comme ceci: Remarque: p>
p code> et de la valeur de retour à point2f code> ou point2d code>,
et d'ajouter une distribution à float code> ou double code> au dénominateur dans la déclaration de retour. LI>
ul> p>