From 7704a34b1c4c7855ecde5b0583fdb512ab3bec3c Mon Sep 17 00:00:00 2001 From: gelsingerro81137 Date: Thu, 4 Jan 2024 14:13:28 +0100 Subject: [PATCH] =?UTF-8?q?test=20case=20record=20gefixxt=20und=20alte=20f?= =?UTF-8?q?acedetect=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/__pycache__/constants.cpython-310.pyc | Bin 336 -> 334 bytes code/__pycache__/eulerian.cpython-310.pyc | Bin 1822 -> 1820 bytes .../excel_processing.cpython-310.pyc | Bin 3527 -> 3520 bytes code/__pycache__/excel_update.cpython-310.pyc | Bin 1853 -> 1846 bytes .../__pycache__/facedetection.cpython-310.pyc | Bin 2349 -> 2342 bytes code/__pycache__/heartrate.cpython-310.pyc | Bin 1860 -> 1853 bytes code/__pycache__/processing.cpython-310.pyc | Bin 1899 -> 1897 bytes code/__pycache__/pyramids.cpython-310.pyc | Bin 1887 -> 1885 bytes code/__pycache__/recording.cpython-310.pyc | Bin 3462 -> 3468 bytes code/facedetection2.py | 61 ++++++++++++++++++ code/main.py | 36 ++++++----- code/recording.py | 2 +- .../testing/excel/Testcase_excel_dataset.xlsx | Bin 6641 -> 6744 bytes 13 files changed, 83 insertions(+), 16 deletions(-) create mode 100644 code/facedetection2.py diff --git a/code/__pycache__/constants.cpython-310.pyc b/code/__pycache__/constants.cpython-310.pyc index 881ff6811af91143197f8186c307ddde7e318b19..b39098a4c0a33bb70a2c780160ff19ed862888d0 100644 GIT binary patch delta 57 zcmcb>bdHHTpO=@50SL}6oHmjBm!fX6RZM7cYEf}aNosLPj7w^9c1eCgjBA*$u3=1a LeoE?O4Mq(B859!( delta 59 zcmX@dbb*OGpO=@50SKPiw@>8$rL3Q96%$&VT2vfUl3H96-7OKNd;Nq#|$YnZRD OVN7yueL$KopO=@50SL}6oR+GgeO#I^pO=@50SLlgPD!08ypeAoo3eGXRZM7cYEf}aNosLPj7w^9c1eCgOln!K zf{~G-k&%Is@#Gh5UX09}joE)QG6qf7=iJX2y7@ilBPMNkpi#vhK!S;hkC6umnf`OJ m2r!E=voQ-Waxil-@-ee80a;8u%#;7{C^IroR^Xk_XaE4>$RV8o diff --git a/code/__pycache__/excel_update.cpython-310.pyc b/code/__pycache__/excel_update.cpython-310.pyc index 6b2edc5915b66073c4f216e476a0c560cb248062..aca38a954fcf36524e134982a68ded65d6117f58 100644 GIT binary patch delta 37 rcmdnXw~dcGpO=@50SL}6oVJmhg^|%Pf3;D$ji;4Y>{jg6Iz^FR2);1T3iz2l3JWyl3x&$T9&I| QWMpV$WME`G*@WX003wGHzyJUM diff --git a/code/__pycache__/heartrate.cpython-310.pyc b/code/__pycache__/heartrate.cpython-310.pyc index 00f31b767d4fd61259c802d19bfab99c099e3814..5e2970b59f752a08704469352d935c9c98a889da 100644 GIT binary patch delta 56 zcmX@Yx0jDMpO=@50SL}6oR(U(k=LG8MmO0iCbT%Us5qu1wYVh4CAB!aB)=fWHOyDn KaC1KERYm~mh7xE1 delta 63 zcmdnXcZ82OpO=@50SG)kPf4}k$ZOB4Y?5ph6Iz^FR2);1T3iz2l3JWyl3x&$T9&I| RWMpV$WME{xIfL~oBLG_66R!XO diff --git a/code/__pycache__/processing.cpython-310.pyc b/code/__pycache__/processing.cpython-310.pyc index 5163ec13ec0b9f87ff5fc54b5bd32841f42af88b..e27af07a19316fb1d1813193157b2c3164e1842f 100644 GIT binary patch delta 58 zcmaFO_mYo0pO=@50SL}6oVJm>noUtJ*(xTqIJKxarX;nvB*rDRIJ+djAjUP!SJyBm MIX@+J@=CTt03_2C82|tP delta 60 zcmaFK_nMD8pO=@50SJ1wc5LLXW>Ypuwu%WYPAw{qDM>9ZiE&9S&MwI>h)FHWRWLF# OG%_+UGM>Dg?GOMx2osqA diff --git a/code/__pycache__/pyramids.cpython-310.pyc b/code/__pycache__/pyramids.cpython-310.pyc index 5afe855dd9828da3465090a8c2ef10cf432d5434..6784b03ce49844c3d596653dd1ca77fbe1b628e1 100644 GIT binary patch delta 63 zcmcc5cbAVZpO=@50SL}6oR-SKzL9SNGo#Mr`OIQmu3^5qhB3+cDXE(eGT&ihyft|q RTNLC^?y#T@^@bvYP+^Rq7E= diff --git a/code/__pycache__/recording.cpython-310.pyc b/code/__pycache__/recording.cpython-310.pyc index ecc7f3312b636af7e6f1c3cfb110e97f9cb86a39..92083c1ec2c27f18121a9d76ff3b821642581e4d 100644 GIT binary patch delta 332 zcmW;FJx>BL0LF29L8q7$f2CkOdu#PTimbA)%&i82kWEZjC0) zurioiP5d5w1HXlR=?7&gMfQ{QlUA-mitF@jJQ7l?L-)EO;K=cy zj;*1MVi}49*aIfFIWxGZ{~fP|8Evd`r={cbkZevkpkbn}1PyrFDKtfY=@^Nlkdm|9v3Pd=A2on%t1|m#BggJ^&A*U6?PTmc_pbu vMNA+eutnS;aaPx|)Vz`+OOU7ph>!*md?3OFM0kP-S0FK2fm3vH9IqY#iBdxW diff --git a/code/facedetection2.py b/code/facedetection2.py new file mode 100644 index 0000000..2b81e50 --- /dev/null +++ b/code/facedetection2.py @@ -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 diff --git a/code/main.py b/code/main.py index e0075dc..29baee1 100644 --- a/code/main.py +++ b/code/main.py @@ -27,8 +27,8 @@ code_version= "1.0" current_dir = os.getcwd() -testcase_excel_file_path = os.path.join(current_dir, 'testing/excel/Testcase_excel_dataset.xlsx') -testruns_excel_file_path = os.path.join(current_dir, 'testing/excel/Testruns.xlsx') +testcase_excel_file_path = os.path.join(current_dir, 'code/testing/excel/Testcase_excel_dataset.xlsx') +testruns_excel_file_path = os.path.join(current_dir, 'code/testing/excel/Testruns.xlsx') class VideoProcessingApp(tk.Tk): def __init__(self): @@ -186,27 +186,33 @@ class VideoProcessingApp(tk.Tk): def check_recording_status(self): - excel_file_path = 'testing/excel/Testcase_excel_dataset.xlsx' - global recording_finished # Deklarieren Sie die Verwendung der globalen Variable - + excel_file_path = 'code/testing/excel/Testcase_excel_dataset.xlsx' + global recording_finished + if recording_finished_event.is_set(): - recording_finished_event.clear() video_name = self.testcase_name_entry.get() - length = int(self.video_length_entry.get()) # Hole die Länge des Videos + length = int(self.video_length_entry.get()) pulse = simpledialog.askinteger("Puls", "Bitte geben Sie Ihren Puls ein:") + if pulse is not None: new_video_name = f"{video_name}_{length}_{pulse}.avi" - original_video_path = os.path.join('videos', f"{video_name}.avi") - new_video_path = os.path.join('videos', new_video_name) - os.rename(original_video_path, new_video_path) - print(f"Video umbenannt zu {new_video_name}") - self.write_to_excel(new_video_name, excel_file_path) + original_video_path = os.path.join('code', 'videos', f"{video_name}.avi") + new_video_path = os.path.join('code', 'videos', new_video_name) + + if not os.path.exists(original_video_path): + print(f"Datei nicht gefunden: {original_video_path}") + return + + try: + os.rename(original_video_path, new_video_path) + print(f"Video umbenannt zu {new_video_name}") + self.write_to_excel(new_video_name, excel_file_path) + except Exception as e: + print(f"Fehler beim Umbenennen der Datei: {e}") else: - print("recording_finished ist False, warte auf Aufnahmeende") print("Kein Puls eingegeben.") - # Planen Sie die nächste Überprüfung - + self.after(100, self.check_recording_status) #ui relateted methods diff --git a/code/recording.py b/code/recording.py index 41a1254..9b73314 100644 --- a/code/recording.py +++ b/code/recording.py @@ -56,7 +56,7 @@ def record_video(video_name="aufgenommenes_video", length=5,testcase_resolution1 """ - output_folder = "videos" + output_folder = "code/videos" output_file = os.path.join(output_folder, video_name + ".avi") frame_rate = testcase_fps diff --git a/code/testing/excel/Testcase_excel_dataset.xlsx b/code/testing/excel/Testcase_excel_dataset.xlsx index 27161ceefbd10be4be7e22e7999e5df66be17532..1b2038377361cdaf9d6280007784fbc158721302 100644 GIT binary patch delta 2821 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 delta 2735 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