From 38475f3457b681b761120e739f363f9591a6bb0c Mon Sep 17 00:00:00 2001 From: Jonathan Frei Date: Wed, 14 Feb 2024 16:23:14 +0000 Subject: [PATCH] =?UTF-8?q?=E2=80=9Ecode/facedetection1.py=E2=80=9C=20l?= =?UTF-8?q?=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/facedetection1.py | 77 ------------------------------------------ 1 file changed, 77 deletions(-) delete mode 100644 code/facedetection1.py diff --git a/code/facedetection1.py b/code/facedetection1.py deleted file mode 100644 index b91864a..0000000 --- a/code/facedetection1.py +++ /dev/null @@ -1,77 +0,0 @@ -""" -Abhängigkeiten: -- cv2 (OpenCV-Paket) -- numpy - -Autor: Ihr Name -Datum: Erstellungs- oder Änderungsdatum -Version: Modulversion -""" - -import cv2 -import numpy as np - -faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_alt2.xml") -eyeCascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_eye.xml") - -def read_video(path): - """ - Liest ein Video, erkennt Gesichter und extrahiert Regionen von Interesse (ROIs). - - Diese Funktion nimmt einen Pfad zu einer Videodatei und liest das Video. Während des Lesens erkennt sie - Gesichter im Video und extrahiert die ROIs (Gesichtsbereiche), die anschließend in einer Liste von Frames - gespeichert werden. Die Frames werden für spätere Verarbeitungsschritte skaliert. - - Args: - path (str): Der Pfad zur Videodatei. - - Returns: - tuple: Ein Tupel, bestehend aus: - - video_frames (list): Eine Liste von Frames, die die ROIs (Gesichtsbereiche) darstellen. - - frame_ct (int): Die Anzahl der extrahierten Frames. - - fps (int): Die Bildrate (Frames pro Sekunde) des Videos. - """ - cap = cv2.VideoCapture(path) - fps = int(cap.get(cv2.CAP_PROP_FPS)) - video_frames = [] - - while cap.isOpened(): - ret, img = cap.read() - if not ret: - break - - gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) - faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) - - for (x, y, w, h) in faces: - face_roi_gray = gray[y:y+h, x:x+w] - face_roi_color = img[y:y+h, x:x+w] - eyes = eyeCascade.detectMultiScale(face_roi_gray) - - # Annahme: Wir brauchen mindestens zwei Augen für die Berechnung - if len(eyes) == 2: - # Berechne die Position und Größe des Stirnbereichs - eye1_x, eye1_y, eye1_w, eye1_h = eyes[0] - eye2_x, eye2_y, eye2_w, eye2_h = eyes[1] - - # Bestimme die horizontale Position und Breite des Stirnbereichs - forehead_x = min(eye1_x, eye2_x) - forehead_w = max(eye1_x + eye1_w, eye2_x + eye2_w) - forehead_x - - # Bestimme die vertikale Position und Höhe des Stirnbereichs - forehead_y = 0 - forehead_h = int((min(eye1_y, eye2_y) - forehead_y) / 3) - - # Extrahiere und skaliere den Stirnbereich - forehead_roi = face_roi_color[forehead_y:forehead_y + forehead_h, forehead_x:forehead_x + forehead_w] - forehead_resized = cv2.resize(forehead_roi, (500, 500)) - video_frames.append(forehead_resized.astype("float") / 255.0) - - cap.release() - - for frame in video_frames: - cv2.imshow("frame", frame) - cv2.waitKey(20) - cv2.destroyAllWindows() - - return video_frames, len(video_frames), fps