""" Abhängigkeiten: - pyramids (für den Aufbau der Bildpyramiden) - heartrate (zur Berechnung der Herzfrequenz) - preprocessing (für die Video-Vorverarbeitung) - eulerian (für die Euler'sche Video-Magnifikation) - tkinter und constants (für die GUI und Konstantenverwaltung) Autor: Roberto Gelsinger Datum: 07.12.2023 Version: Modulversion """ import pyramids import heartrate import facedetection import eulerian import tkinter as tk from constants import freq_max, freq_min def process_video(selected_video_name): """ Verarbeitet ein ausgewähltes Video, um die Herzfrequenz der abgebildeten Person zu ermitteln. Dieser Prozess umfasst die Vorverarbeitung des Videos, den Aufbau einer Laplace-Pyramide, die Anwendung von FFT-Filterung und Euler'scher Magnifikation, und schließlich die Berechnung der Herzfrequenz aus den Video-Daten. Args: selected_video_name (str): Der Name des zu verarbeitenden Videos. Returns: None: Die Funktion gibt direkt die berechnete Herzfrequenz auf der Konsole aus. """ # Hier folgt Ihr bisheriger Code für die process_video Funktion # Preprocessing phase print("Reading + preprocessing video...") video_frames, frame_ct, fps = facedetection.read_video("code/videos/"+selected_video_name) # Build Laplacian video pyramid print("Building Laplacian video pyramid...") lap_video = pyramids.build_video_pyramid(video_frames) for i, video in enumerate(lap_video): if i == 0 or i == len(lap_video)-1: continue # Eulerian magnification with temporal FFT filtering print("Running FFT and Eulerian magnification...") result, fft, frequencies = eulerian.fft_filter(video, freq_min, freq_max, fps) lap_video[i] += result # Calculate heart rate print("Calculating heart rate...") heart_rate = heartrate.find_heart_rate(fft, frequencies, freq_min, freq_max) # Output heart rate and final video print("Heart rate: ", heart_rate, "bpm")