Moments d'image utilisant OpenCV en Python

Manav Narula 30 janvier 2023
  1. Utilisez la fonction moments() pour calculer les moments à l’aide d’OpenCV en Python
  2. Conclusion
Moments d'image utilisant OpenCV en Python

Python utilise la bibliothèque opencv pour effectuer diverses tâches de vision par ordinateur. Ces tâches impliquent la lecture et le traitement d’images de manière très efficace.

Il existe de nombreuses propriétés d’une image. La librairie opencv fournit de nombreuses fonctions pour travailler avec les contours.

Les contours sont associés pour aider à fournir des informations sur la courbe le long de la limite d’un objet dans l’image et ses formes associées. L’une de ces caractéristiques des contours est appelée moments.

Les moments d’une image sont définis en termes de vision par ordinateur. Il peut être décrit comme la moyenne pondérée de l’intensité des pixels de l’image donnée.

Nous pouvons trouver des informations sur la zone, l’orientation de la forme et son centroïde en utilisant des moments d’image.

Ce tutoriel discutera des moments d’image en utilisant opencv en Python.

Utilisez la fonction moments() pour calculer les moments à l’aide d’OpenCV en Python

En Python, on peut utiliser les moments de l’image en utilisant la fonction moments() de la bibliothèque opencv. Les moments jusqu’au troisième ordre d’un polygone sont calculés à l’aide de cette fonction, et elle renvoie les moments dans un tableau.

Nous pouvons utiliser les valeurs renvoyées dans le tableau donné pour calculer les propriétés telles que le centroïde d’une forme.

Voyons maintenant un exemple de la même chose.

import cv2

i = cv2.imread("img6.jpg")
img_g = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img_g, 127, 255, 0)

M = cv2.moments(img)
X = int(M["m10"] / M["m00"])
Y = int(M["m01"] / M["m00"])

cv2.circle(i, (X, Y), 5, (255, 255, 255), -1)
cv2.imshow("Output", i)
cv2.waitKey(0)
cv2.destroyAllWindows()

Production:

Moments d’image utilisant opencv en Python

Dans l’exemple ci-dessus, nous trouvons le centre de gravité d’un cercle à l’aide des moments de l’image, qui sont calculés à l’aide de la fonction moments().

Tout d’abord, nous lisons l’image requise. L’image est convertie en niveaux de gris à l’aide de la fonction cvtColor qui convertit une image dans l’espace colorimétrique requis.

Ensuite, nous appliquons la technique de seuillage à cette image. Cela aidera à lutter contre le bruit et à filtrer les pixels avec des valeurs extrêmes.

Nous utilisons la fonction threshold() et fournissons la valeur de seuil dans la fonction. Dans notre cas, chaque pixel supérieur à 127 est remplacé par 255, et en dessous de 12 est défini sur zéro.

Ensuite, nous calculons les moments de l’image. Nous utilisons les valeurs du tableau renvoyé pour trouver la position du centroïde du cercle.

Le centre de gravité est tracé sur l’image d’origine à l’aide de la fonction circle(). Cette fonction crée un petit cercle aux coordonnées du centroïde.

La sortie finale est affichée, et nous utilisons les fonctions waitKey() et destroyAllWindows() pour attendre que l’utilisateur appuie sur une touche avant de fermer automatiquement la fenêtre de sortie.

Conclusion

Ce tutoriel a abordé les moments d’image dans le domaine de la vision par ordinateur et comment calculer les moments à l’aide de la bibliothèque opencv en Python. Nous avons utilisé la fonction moments() de la bibliothèque opencv pour cela.

Les moments sont renvoyés dans un tableau et peuvent être utilisés pour trouver des détails tels que l’orientation, la surface et le centroïde d’une forme. Nous calculons le centre de gravité d’un cercle dans notre exemple.

Le code est illustré et chaque ligne est expliquée.

Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn