|
|
@ -12,7 +12,8 @@ class PoseEstimationGUI: |
|
|
self.mp4_file_path = None |
|
|
self.mp4_file_path = None |
|
|
self.root = tk.Tk() |
|
|
self.root = tk.Tk() |
|
|
self.root.title("Pose Estimation GUI") |
|
|
self.root.title("Pose Estimation GUI") |
|
|
self.root.geometry("400x200") |
|
|
self.root.geometry("400x400") |
|
|
|
|
|
self.root.config(bg="#F9F9F9") |
|
|
|
|
|
|
|
|
self.camera_options = [] # Initialize camera options list |
|
|
self.camera_options = [] # Initialize camera options list |
|
|
|
|
|
|
|
|
@ -20,20 +21,34 @@ class PoseEstimationGUI: |
|
|
self.camera_options = DataStreamModule().findCameras() |
|
|
self.camera_options = DataStreamModule().findCameras() |
|
|
self.selected_camera = tk.StringVar() |
|
|
self.selected_camera = tk.StringVar() |
|
|
self.selected_camera.set(self.camera_options[0]) # default value |
|
|
self.selected_camera.set(self.camera_options[0]) # default value |
|
|
|
|
|
camera_label = tk.Label(self.root, text="Select a camera:", bg="#F9F9F9", font=("Arial", 12, "bold")) |
|
|
|
|
|
camera_label.pack(pady=(20, 0)) |
|
|
camera_menu = tk.OptionMenu(self.root, self.selected_camera, *self.camera_options) |
|
|
camera_menu = tk.OptionMenu(self.root, self.selected_camera, *self.camera_options) |
|
|
|
|
|
camera_menu.config(font=("Arial", 12)) |
|
|
camera_menu.pack() |
|
|
camera_menu.pack() |
|
|
|
|
|
|
|
|
# Create a button to start pose estimation |
|
|
|
|
|
self.start_button = tk.Button(self.root, text="Start Pose Estimation", command=self.start_pose_estimation) |
|
|
|
|
|
self.start_button.pack() |
|
|
|
|
|
|
|
|
|
|
|
# Create a button to select an mp4 file |
|
|
# Create a button to select an mp4 file |
|
|
self.select_file_button = tk.Button(self.root, text="Select MP4 File to Start HPE on", command=self.select_file) |
|
|
self.select_file_button = tk.Button(self.root, text="Select MP4 File to Start HPE on", bg="#2196F3", fg="white", |
|
|
self.select_file_button.pack() |
|
|
font=("Arial", 12, "bold"), command=self.select_file) |
|
|
|
|
|
self.select_file_button.pack(pady=(10, 20)) |
|
|
|
|
|
|
|
|
# Create label widget to indicate file selection status |
|
|
# Create label widget to indicate file selection status |
|
|
self.file_selected_label = Label(self.root, text="No file selected", fg="red") |
|
|
self.file_selected_label = Label(self.root, text="No file selected", fg="red", bg="#F9F9F9", |
|
|
self.file_selected_label.pack(pady=10) |
|
|
font=("Arial", 12)) |
|
|
|
|
|
self.file_selected_label.pack(pady=(10, 0)) |
|
|
|
|
|
|
|
|
|
|
|
# Create a button to start pose estimation |
|
|
|
|
|
self.start_button = tk.Button(self.root, text="Start Pose Estimation", bg="#4CAF50", fg="white", |
|
|
|
|
|
font=("Arial", 12, "bold"), command=self.start_pose_estimation) |
|
|
|
|
|
self.start_button.pack(pady=(20, 10)) |
|
|
|
|
|
|
|
|
|
|
|
# Create a checkbox to enable/disable Export of Landmarks |
|
|
|
|
|
self.export_Landmarks = tk.BooleanVar() |
|
|
|
|
|
self.export_Landmarks.set(False) |
|
|
|
|
|
export_Landmarks_checkbox = tk.Checkbutton(self.root, text="Export Landmarks", variable=self.export_Landmarks, |
|
|
|
|
|
bg="#F9F9F9", |
|
|
|
|
|
font=("Arial", 12, "bold"), onvalue=True, offvalue=False) |
|
|
|
|
|
export_Landmarks_checkbox.pack() |
|
|
|
|
|
|
|
|
self.root.mainloop() |
|
|
self.root.mainloop() |
|
|
|
|
|
|
|
|
@ -41,7 +56,7 @@ class PoseEstimationGUI: |
|
|
if self.mp4_file_path is not None: |
|
|
if self.mp4_file_path is not None: |
|
|
# Start pose estimation on the selected mp4 file |
|
|
# Start pose estimation on the selected mp4 file |
|
|
pose_estimator = HPEModule() |
|
|
pose_estimator = HPEModule() |
|
|
pose_thread_file = threading.Thread(target=pose_estimator.startHPEwithCamera, args=(self.mp4_file_path,)) |
|
|
pose_thread_file = threading.Thread(target=pose_estimator.startHPEwithCamera, args=(self.mp4_file_path, self.export_Landmarks,)) |
|
|
self.mp4_file_path = None |
|
|
self.mp4_file_path = None |
|
|
self.file_selected_label.config(text="No File selected", fg="red") |
|
|
self.file_selected_label.config(text="No File selected", fg="red") |
|
|
pose_thread_file.start() |
|
|
pose_thread_file.start() |
|
|
@ -50,7 +65,7 @@ class PoseEstimationGUI: |
|
|
# print(self.selected_camera.get()) |
|
|
# print(self.selected_camera.get()) |
|
|
pose_estimator = HPEModule() |
|
|
pose_estimator = HPEModule() |
|
|
camera = int(self.selected_camera.get()) |
|
|
camera = int(self.selected_camera.get()) |
|
|
pose_thread_camera = threading.Thread(target=pose_estimator.startHPEwithCamera, args=(camera,)) |
|
|
pose_thread_camera = threading.Thread(target=pose_estimator.startHPEwithCamera, args=(camera, self.export_Landmarks,)) |
|
|
pose_thread_camera.start() |
|
|
pose_thread_camera.start() |
|
|
|
|
|
|
|
|
def select_file(self): |
|
|
def select_file(self): |
|
|
|