Dateien hochladen nach „code“
This commit is contained in:
parent
4b6f98fbec
commit
5d5a9077a9
77
code/facedetection.py
Normal file
77
code/facedetection.py
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
"""
|
||||||
|
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
|
77
code/facedetection1.py
Normal file
77
code/facedetection1.py
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
"""
|
||||||
|
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
|
61
code/facedetection2.py
Normal file
61
code/facedetection2.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
"""
|
||||||
|
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")
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
# Detect faces
|
||||||
|
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
|
||||||
|
|
||||||
|
# Extract ROIs and resize
|
||||||
|
for (x, y, w, h) in faces:
|
||||||
|
face_roi = cv2.resize(img[y:y+h, x:x+w], (500, 500))
|
||||||
|
frame = face_roi.astype("float") / 255.0
|
||||||
|
video_frames.append(frame)
|
||||||
|
|
||||||
|
cap.release()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for frame in video_frames:
|
||||||
|
cv2.imshow("frame", frame)
|
||||||
|
cv2.waitKey(20)
|
||||||
|
cv2.destroyAllWindows()
|
||||||
|
return video_frames, len(video_frames), fps
|
Loading…
x
Reference in New Issue
Block a user