You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

processing.py 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """
  2. Abhängigkeiten:
  3. - pyramids (für den Aufbau der Bildpyramiden)
  4. - heartrate (zur Berechnung der Herzfrequenz)
  5. - preprocessing (für die Video-Vorverarbeitung)
  6. - eulerian (für die Euler'sche Video-Magnifikation)
  7. - tkinter und constants (für die GUI und Konstantenverwaltung)
  8. Autor: Roberto Gelsinger
  9. Datum: 07.12.2023
  10. Version: Modulversion
  11. """
  12. import pyramids
  13. import heartrate
  14. import facedetection
  15. import eulerian
  16. import tkinter as tk
  17. from constants import freq_max, freq_min
  18. def process_video(selected_video_name):
  19. """
  20. Verarbeitet ein ausgewähltes Video, um die Herzfrequenz der abgebildeten Person zu ermitteln.
  21. Dieser Prozess umfasst die Vorverarbeitung des Videos, den Aufbau einer Laplace-Pyramide,
  22. die Anwendung von FFT-Filterung und Euler'scher Magnifikation, und schließlich die Berechnung
  23. der Herzfrequenz aus den Video-Daten.
  24. Args:
  25. selected_video_name (str): Der Name des zu verarbeitenden Videos.
  26. Returns:
  27. None: Die Funktion gibt direkt die berechnete Herzfrequenz auf der Konsole aus.
  28. """
  29. # Hier folgt Ihr bisheriger Code für die process_video Funktion
  30. # Preprocessing phase
  31. print("Reading + preprocessing video...")
  32. video_frames, frame_ct, fps = facedetection.read_video("code/videos/"+selected_video_name)
  33. # Build Laplacian video pyramid
  34. print("Building Laplacian video pyramid...")
  35. lap_video = pyramids.build_video_pyramid(video_frames)
  36. for i, video in enumerate(lap_video):
  37. if i == 0 or i == len(lap_video)-1:
  38. continue
  39. # Eulerian magnification with temporal FFT filtering
  40. print("Running FFT and Eulerian magnification...")
  41. result, fft, frequencies = eulerian.fft_filter(video, freq_min, freq_max, fps)
  42. lap_video[i] += result
  43. # Calculate heart rate
  44. print("Calculating heart rate...")
  45. heart_rate = heartrate.find_heart_rate(fft, frequencies, freq_min, freq_max)
  46. # Output heart rate and final video
  47. print("Heart rate: ", heart_rate, "bpm")