Skip to content
Inhalt dieser Seite
Inhalt dieser Seite

Kommentierte Beispiele

Computer Vision mit Python

Ich habe das Google-Beispiel auseinandergenommen (Bilddatei/Webcam), leicht angepasst und korrigiert. Das Original-Beispiel findet man online.

Aus Bilddatei

py
import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils

# For static images:
IMAGE_FILES = ["selfie.jpg"]

with mp_face_detection.FaceDetection(model_selection=1, min_detection_confidence=0.5) as face_detection:
    for file in IMAGE_FILES:
        image = cv2.imread(file)
        # Convert the BGR image to RGB and process it with MediaPipe Face Detection.
        converted = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        results = face_detection.process(converted)

        # Draw face detections of each face.
        if not results.detections:
            continue
        
        annotated_image = image.copy()
        
        for detection in results.detections:
            print('Nose tip:')
            print(mp_face_detection.get_key_point(detection, mp_face_detection.FaceKeyPoint.NOSE_TIP))
            mp_drawing.draw_detection(annotated_image, detection)
          
        cv2.imwrite(file.split(".")[0] + '_output.png', annotated_image)

Von Webcam

py
import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils

# For webcam input:
cap = cv2.VideoCapture(0)
with mp_face_detection.FaceDetection(model_selection=0, min_detection_confidence=0.5) as face_detection:
    while cap.isOpened():
        (success, image) = cap.read()
        if not success:
            print("Ignoring empty camera frame.")
            # If loading a video, use 'break' instead of 'continue'.
            continue

        # To improve performance, optionally mark the image as not writeable to
        # pass by reference.
        image.flags.writeable = False
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        results = face_detection.process(image)

        # Draw the face detection annotations on the image.
        image.flags.writeable = True
        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
        if results.detections:
            for detection in results.detections:
                mp_drawing.draw_detection(image, detection)
            
        # Flip the image horizontally for a selfie-view display.
        cv2.imshow('MediaPipe Face Detection', cv2.flip(image, 1))
        if cv2.waitKey(5) & 0xFF == 27:
            break
    
cap.release()

Tipp: macOS

Das Beispiel muss Zugriff auf die Webcam haben. Thonny selbst frägt dazu im System nicht nach. Aber es gibt eine Lösung:

  • gehe auf Run 👉 Run current script in terminal
  • das Terminal verlangt Zugriff auf die Webcam
  • erlaube dies
  • starte ab jetzt immer über den Terminal

Gymnasium Kirchenfeld, fts