Skip to content
Inhalt dieser Seite
Inhalt dieser Seite

OpenCV

Computer Vision mit Python

OpenCV (englische Abk. für Open Computer Vision) ist eine freie Programmbibliothek mit Algorithmen für die Bildverarbeitung und Computer Vision.

Die mediapipe-Beispiele verwenden OpenCV zur Darstellung und Bearbeitung von Bilder.

Zeichnen

Die im Beispiel verwendete Funktion draw_detection zeichnet einen Rahmen und die erkannten keypoints. Möchte man etwas anderes Zeichnen, so muss man das selbst tun.

Wir finden die Funktion in der Datei drawing_utils.py. Gezeichnet wird mit den Zeichenbefehlen von OpenCV. Zuerst aber müssen die relativen Koordinaten der keypoints mit einem Dreisatz in Pixel-Koordinaten konvertiert werden.

Hier eine leicht vereinfachte Variante der im Skript gefundenen Funktion _normalized_to_pixel_coordinates():

python
def to_pixel(normalized_x, normalized_y, image):
   """Converts normalized value pair to pixel coordinates."""
   image_height, image_width, _ = image.shape 
   x_px = min(math.floor(normalized_x * image_width), image_width - 1)
   y_px = min(math.floor(normalized_y * image_height), image_height - 1)
   return x_px, y_px

keypoint = {"x": 0.3, "y": 0.93} # fiktiver keypoint erzeugen
pixel = to_pixel(keypoint.x, keypoint.y, image_cols, image)

Die Funktion erhält als Argumente zwei relative Koordinaten und das Bild (wegen der Bildgrösse). Zurückgeliefert wird das Tupel der errechneten Pixel-Koordinaten, welches direkt in den OpenCV-Zeichenfunktionen verwendet werden kann:

python
cv2.circle(image, pixel, 20, [255,0,0], 2)

Die Zeichenbefehle von OpenCV findet man hier:

Bildausschnitt

Man kann einen rechteckigen Ausschnitt des Bildes weiterbearbeiten. OpenCV behandelt Bilder wie zweidimensionale Listen – man wählt einfach eine Unterliste (y-Koordinate zuerst).

Bildbearbeitung

Z.B. können Bilder geglättet werden:

python
image = cv2.blur(image,(10,10))

Gymnasium Kirchenfeld, fts