diff --git a/camera_setting_screen.py b/camera_setting_screen.py index 3a9cdc6..6954dc8 100644 --- a/camera_setting_screen.py +++ b/camera_setting_screen.py @@ -115,6 +115,15 @@ def load_camera_parameter(self, camera_num): tmp_cap.set( cv2.CAP_PROP_AUTOFOCUS, camera_param_dict["CAP_PROP_AUTOFOCUS"] ) + if camera_param_dict["EDIT_AUTO_WB"]: + tmp_cap.set( + cv2.CAP_PROP_AUTO_WB, camera_param_dict["CAP_PROP_AUTO_WB"] + ) + if camera_param_dict["EDIT_WB_TEMPERATURE"]: + tmp_cap.set( + cv2.CAP_PROP_WB_TEMPERATURE, + camera_param_dict["CAP_PROP_WB_TEMPERATURE"], + ) return True return False @@ -165,9 +174,14 @@ def active_camera(self, camera_num): self.screen.ids["parameter_settings_button"].disabled = False self.screen.ids["save_settings_button"].disabled = False self.screen.ids["delete_saved_settings_button"].disabled = False - Clock.schedule_interval(self.update, 1.0 / float(self.app.confini["settings"]["display_fps"])) + Clock.schedule_interval( + self.update, 1.0 / float(self.app.confini["settings"]["display_fps"]) + ) Clock.schedule_interval(self.update_parameter, 5) - Clock.schedule_interval(self._disp_canvas, 1.0 / float(self.app.confini["settings"]["display_fps"])) + Clock.schedule_interval( + self._disp_canvas, + 1.0 / float(self.app.confini["settings"]["display_fps"]), + ) def _disp_canvas(self, dt): if self.texture is not None: @@ -278,6 +292,8 @@ def update_parameter(self, dt): "CAP_PROP_AUTO_EXPOSURE": self.cap.get(cv2.CAP_PROP_AUTO_EXPOSURE), "CAP_PROP_FOCUS": self.cap.get(cv2.CAP_PROP_FOCUS), "CAP_PROP_AUTOFOCUS": self.cap.get(cv2.CAP_PROP_AUTOFOCUS), + "CAP_PROP_AUTO_WB": self.cap.get(cv2.CAP_PROP_AUTO_WB), + "CAP_PROP_WB_TEMPERATURE": self.cap.get(cv2.CAP_PROP_WB_TEMPERATURE), } self.app.camera_parameter_list[self.app.camera_num].update(camera_para) self.pt.display_parameter(None) diff --git a/main.py b/main.py index 3f2edb0..4647cbc 100644 --- a/main.py +++ b/main.py @@ -4,9 +4,6 @@ import pickle import cv2 -from aimodel_setting_screen import AimodelSettingScreen -from camera_setting_screen import CameraSettingScreen -from inspection_setting_screen import InspectionSettingScreen from kivy.core.text import DEFAULT_FONT, LabelBase from kivy.core.window import Window from kivy.lang import Builder @@ -18,6 +15,10 @@ from kivymd.uix.boxlayout import MDBoxLayout from kivymd.uix.screen import MDScreen from kivymd.uix.screenmanager import MDScreenManager + +from aimodel_setting_screen import AimodelSettingScreen +from camera_setting_screen import CameraSettingScreen +from inspection_setting_screen import InspectionSettingScreen from main_screen import MainScreen from making_dataset_screen import MakingDatasetScreen from preprocessing_screen import PreprocessingScreen @@ -123,9 +124,8 @@ def get_cameras(self): "CAP_PROP_GAIN": cap.get(cv2.CAP_PROP_GAIN), "CAP_PROP_GAMMA": cap.get(cv2.CAP_PROP_GAMMA), "CAP_PROP_EXPOSURE": cap.get(cv2.CAP_PROP_EXPOSURE), - "CAP_PROP_AUTO_EXPOSURE": cap.get(cv2.CAP_PROP_AUTO_EXPOSURE), "CAP_PROP_FOCUS": cap.get(cv2.CAP_PROP_FOCUS), - "CAP_PROP_AUTOFOCUS": cap.get(cv2.CAP_PROP_AUTOFOCUS), + "CAP_PROP_WB_TEMPERATURE": cap.get(cv2.CAP_PROP_WB_TEMPERATURE), } editable_para = { "EDIT_FRAME_WIDTH": cap.set( @@ -162,16 +162,25 @@ def get_cameras(self): ), "EDIT_AUTO_EXPOSURE": cap.set( cv2.CAP_PROP_AUTO_EXPOSURE, - camera_para["CAP_PROP_AUTO_EXPOSURE"], + 0.1, ), "EDIT_FOCUS": cap.set( cv2.CAP_PROP_FOCUS, camera_para["CAP_PROP_FOCUS"] ), - "EDIT_AUTOFOCUS": cap.set( - cv2.CAP_PROP_AUTOFOCUS, camera_para["CAP_PROP_AUTOFOCUS"] + "EDIT_AUTOFOCUS": cap.set(cv2.CAP_PROP_AUTOFOCUS, 0.1), + "EDIT_AUTO_WB": cap.set(cv2.CAP_PROP_AUTO_WB, 0.1), + "EDIT_WB_TEMPERATURE": cap.set( + cv2.CAP_PROP_WB_TEMPERATURE, + camera_para["CAP_PROP_WB_TEMPERATURE"], ), } camera_para.update(editable_para) + update_auto_para = { + "CAP_PROP_AUTO_EXPOSURE": cap.get(cv2.CAP_PROP_AUTO_EXPOSURE), + "CAP_PROP_AUTOFOCUS": cap.get(cv2.CAP_PROP_AUTOFOCUS), + "CAP_PROP_AUTO_WB": cap.get(cv2.CAP_PROP_AUTO_WB), + } + camera_para.update(update_auto_para) self.camera_parameter_list[i] = camera_para self.camera_list[i] = cap self.camera_count += 1 @@ -342,6 +351,11 @@ def open_inspection_cameras(self): cv2.CAP_PROP_AUTOFOCUS, camera_param_dict["CAP_PROP_AUTOFOCUS"], ) + if camera_param_dict["EDIT_AUTO_WB"]: + self.camera_list[camera_num].set( + cv2.CAP_PROP_AUTO_WB, + camera_param_dict["CAP_PROP_AUTO_WB"], + ) if "RATIO_1" in camera_param_dict: self.current_ratio1[camera_num] = camera_param_dict[ "RATIO_1"