Bildmomente mit OpenCV in Python

Manav Narula 18 August 2022
  1. Verwenden Sie die Funktion moments() zur Berechnung von Momenten mit OpenCV in Python
  2. Fazit
Bildmomente mit OpenCV in Python

Python verwendet die Bibliothek opencv, um verschiedene Computer-Vision-Aufgaben auszuführen. Diese Aufgaben umfassen das sehr effiziente Lesen und Verarbeiten von Bildern.

Es gibt viele Eigenschaften eines Bildes. Die Bibliothek opencv bietet viele Funktionen zum Arbeiten mit Konturen.

Konturen dienen dazu, Informationen über die Kurve entlang der Grenze eines Objekts im Bild und die zugehörigen Formen bereitzustellen. Ein solches Merkmal von Konturen wird Momente genannt.

Momente eines Bildes werden in Bezug auf Computer Vision definiert. Sie kann als gewichteter Durchschnitt der Intensität der Pixel des gegebenen Bildes beschrieben werden.

Mithilfe von Bildmomenten können wir Informationen über die Fläche, die Ausrichtung der Form und ihren Schwerpunkt finden.

Dieses Tutorial behandelt Bildmomente mit opencv in Python.

Verwenden Sie die Funktion moments() zur Berechnung von Momenten mit OpenCV in Python

In Python können wir die Bildmomente mit der Funktion moments() aus der Bibliothek opencv verwenden. Mit dieser Funktion werden die Momente bis zur dritten Ordnung eines Polygons berechnet und in einem Array zurückgegeben.

Wir können die im gegebenen Array zurückgegebenen Werte verwenden, um die Eigenschaften wie den Schwerpunkt einer Form zu berechnen.

Sehen wir uns nun ein Beispiel dafür an.

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()

Ausgabe:

Bildmomente mit opencv in Python

Im obigen Beispiel finden wir den Schwerpunkt eines Kreises anhand der Bildmomente, die mit der Funktion moments() berechnet werden.

Zuerst lesen wir das erforderliche Bild. Das Bild wird mit der Funktion cvtColor in Graustufen konvertiert, die ein Bild in den erforderlichen Farbraum konvertiert.

Dann wenden wir die Schwellwerttechnik auf dieses Bild an. Dies hilft, das Rauschen zu bekämpfen und die Pixel mit extremen Werten zu filtern.

Wir verwenden die Funktion threshold() und liefern den Schwellwert innerhalb der Funktion. In unserem Fall wird jedes Pixel größer als 127 auf 255 geändert und Pixel unter 12 werden auf Null gesetzt.

Dann berechnen wir die Bildmomente. Wir verwenden die Werte aus dem zurückgegebenen Array, um die Position des Schwerpunkts des Kreises zu finden.

Der Schwerpunkt wird mit der Funktion circle() auf das Originalbild aufgetragen. Diese Funktion erstellt einen kleinen Kreis an den Koordinaten des Schwerpunkts.

Die endgültige Ausgabe wird angezeigt, und wir verwenden die Funktionen waitKey() und destroyAllWindows(), um zu warten, bis der Benutzer eine Taste drückt, bevor das Ausgabefenster automatisch geschlossen wird.

Fazit

In diesem Tutorial wurden Bildmomente im Bereich Computer Vision und die Berechnung von Momenten mit der Bibliothek opencv in Python behandelt. Wir haben dafür die Funktion moments() aus der Bibliothek opencv verwendet.

Die Momente werden in einem Array zurückgegeben und können verwendet werden, um Details wie Ausrichtung, Fläche und Schwerpunkt einer Form zu finden. In unserem Beispiel berechnen wir den Schwerpunkt eines Kreises.

Der Code ist illustriert und jede Zeile wird erklärt.

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