From 8930cc2c26b03f4b6ab7bccae782025f28c74037 Mon Sep 17 00:00:00 2001 From: Prohurtz <48768484+RedHawk989@users.noreply.github.com> Date: Sun, 18 Sep 2022 13:53:29 -0700 Subject: [PATCH] add saving functionality to some params, fix other things --- EyeTrackApp/.json | 1 + EyeTrackApp/config.py | 6 ++-- EyeTrackApp/eyetrackapp.py | 1 + EyeTrackApp/settings_widget.py | 66 ++++++++++++++++++++++++---------- 4 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 EyeTrackApp/.json diff --git a/EyeTrackApp/.json b/EyeTrackApp/.json new file mode 100644 index 0000000..4cee227 --- /dev/null +++ b/EyeTrackApp/.json @@ -0,0 +1 @@ +{"version": 1, "right_eye": {"threshold": 60, "rotation_angle": 334, "roi_window_x": 134, "roi_window_y": 104, "roi_window_w": 132, "roi_window_h": 77, "focal_length": 30, "capture_source": "http://192.168.0.238/", "vrc_eye_position_scalar": 3000, "show_color_image": false, "gui_flip_x_axis": false}, "left_eye": {"threshold": 82, "rotation_angle": 37, "roi_window_x": 146, "roi_window_y": 108, "roi_window_w": 115, "roi_window_h": 110, "focal_length": 30, "capture_source": "http://192.168.0.62", "vrc_eye_position_scalar": 3000, "show_color_image": false, "gui_flip_x_axis": false}, "settings": {"threshold": 0, "rotation_angle": 50, "roi_window_x": 0, "roi_window_y": 0, "roi_window_w": 0, "roi_window_h": 0, "focal_length": 30, "capture_source": null, "vrc_eye_position_scalar": 3000, "show_color_image": false, "gui_flip_x_axis": false}, "eye_display_id": 0} \ No newline at end of file diff --git a/EyeTrackApp/config.py b/EyeTrackApp/config.py index ab390b0..cac38ee 100644 --- a/EyeTrackApp/config.py +++ b/EyeTrackApp/config.py @@ -19,10 +19,10 @@ class EyeTrackCameraConfig: roi_window_h: "int" = 0 focal_length: "int" = 30 capture_source: "Union[int, str, None]" = None - vrc_eye_position_scalar: "int" = 3000 show_color_image: "bool" = False - gui_flip_x_axis: "bool" = False - + gui_flip_x_axis_left: "bool" = False + gui_flip_x_axis_right: "bool" = False + gui_flip_y_axis: "bool" = False CONFIG_FILE_NAME = "eyetrack_settings.json" diff --git a/EyeTrackApp/eyetrackapp.py b/EyeTrackApp/eyetrackapp.py index 77c3575..a99119e 100644 --- a/EyeTrackApp/eyetrackapp.py +++ b/EyeTrackApp/eyetrackapp.py @@ -181,6 +181,7 @@ def main(): for eye in eyes: if eye.started(): eye.render(window, event, values) + settings[0].render(window, event, values) if __name__ == "__main__": diff --git a/EyeTrackApp/settings_widget.py b/EyeTrackApp/settings_widget.py index a5d284e..4e5af80 100644 --- a/EyeTrackApp/settings_widget.py +++ b/EyeTrackApp/settings_widget.py @@ -27,8 +27,11 @@ class SettingsWidget: self.gui_recenter_eye = f"-RECENTEREYE{widget_id}-" self.gui_mode_readout = f"-APPMODE{widget_id}-" self.gui_show_color_image = f"-SHOWCOLORIMAGE{widget_id}-" - self.gui_flip_x_axis = f"-FLIPXAXIS{widget_id}-" + + self.gui_flip_x_axis_left = f"-FLIPXAXISLEFT{widget_id}-" + self.gui_flip_x_axis_right = f"-FLIPXAXISRIGHT{widget_id}-" self.gui_flip_y_axis = f"-FLIPYAXIS{widget_id}-" + self.gui_roi_message = f"-ROIMESSAGE{widget_id}-" self.gui_save_button = f"-SAVE{widget_id}-" @@ -49,23 +52,31 @@ class SettingsWidget: # sg.Button("Recenter Eye", key=self.gui_recenter_eye, button_color = '#6f4ca1'), # ], - [sg.Checkbox( - "Flip X axis", - default=False, - key=self.gui_flip_x_axis, + [ + sg.Checkbox( + "Flip Left Eye X Axis", + default=self.config.gui_flip_x_axis_left, + key=self.gui_flip_x_axis_left, background_color='#424042', ), + sg.Checkbox( + "Flip Right Eye X Axis", + default=self.config.gui_flip_x_axis_left, + key=self.gui_flip_x_axis_right, + background_color='#424042', + ), + ], [sg.Checkbox( - "Flip Y axis", - default=False, + "Flip Y Axis", + default=self.config.gui_flip_y_axis, key=self.gui_flip_y_axis, background_color='#424042', ), ], [ - sg.Text("Tracking algorithim toggles:", background_color='#242224'), + sg.Text("Tracking Algorithim Settings:", background_color='#242224'), # sg.InputText(self.config.capture_source, key=self.gui_camera_addr), ], @@ -77,7 +88,7 @@ class SettingsWidget: ), ], [ - sg.Text("Filter paramaters:", background_color='#242224'), + sg.Text("Filter Paramaters:", background_color='#242224'), # sg.InputText(self.config.capture_source, key=self.gui_camera_addr), ], @@ -130,11 +141,11 @@ class SettingsWidget: # sg.Column(self.roi_layout, key=self.gui_roi_layout, background_color='#424042', visible=False), ], - [ - sg.Button( - "Save Settings", key=self.gui_save_button, button_color = '#6f4ca1' - ), - ], + # [ + # sg.Button( + # "Save Settings", key=self.gui_save_button, button_color = '#6f4ca1' + # ), + #], ] self.cancellation_event = Event() @@ -211,13 +222,30 @@ class SettingsWidget: #if self.config.rotation_angle != values[self.gui_rotation_slider]: # self.config.rotation_angle = int(values[self.gui_rotation_slider]) # changed = True - - if self.config.gui_flip_x_axis != values[self.gui_flip_x_axis]: - self.config.gui_flip_x_axis = values[self.gui_flip_x_axis] + # print(self.config.gui_flip_x_axis, values[self.gui_flip_x_axis]) + if self.config.gui_flip_x_axis_right != values[self.gui_flip_x_axis_right]: + self.config.gui_flip_x_axis_right = values[self.gui_flip_x_axis_right] changed = True + if self.config.gui_flip_x_axis_left != values[self.gui_flip_x_axis_left]: + self.config.gui_flip_x_axis_left = values[self.gui_flip_x_axis_left] + changed = True + + + if self.config.gui_flip_y_axis != values[self.gui_flip_y_axis]: + self.config.gui_flip_y_axis = values[self.gui_flip_y_axis] + changed = True + + + #print(self.config.gui_flip_x_axis, values[self.gui_flip_x_axis]) + # if values[self.gui_flip_x_axis] != self.config.gui_flip_x_axis: + # values[self.gui_flip_x_axis] = self.config.gui_flip_x_axis + + + if changed: self.main_config.save() + # elif self.camera.camera_status == CameraState.CONNECTING: @@ -259,7 +287,7 @@ class SettingsWidget: # try: # window[self.gui_roi_message].update(visible=False) # window[self.gui_output_graph].update(visible=True) - (maybe_image, eye_info) = self.image_queue.get(block=False) + #(maybe_image, eye_info) = self.image_queue.get(block=False) # imgbytes = cv2.imencode(".ppm", maybe_image)[1].tobytes() # window[self.gui_tracking_image].update(data=imgbytes) @@ -269,7 +297,7 @@ class SettingsWidget: # Relay information to OSC # if eye_info.info_type != InformationOrigin.FAILURE: - self.osc_queue.put((self.eye_id, eye_info)) + self.osc_queue.put((EyeId.SETTINGS)) #self.osc_queue.put((EyeId.SETTINGS)) # except Empty: # return