From e600e2e01e1cd8de7c01f7121f4fd57e0ab31043 Mon Sep 17 00:00:00 2001 From: neonb Date: Mon, 13 Mar 2023 15:06:56 +0100 Subject: [PATCH] oring --- config/machine_settings/laptop.ini | 13 +++++++++++-- src/components/vision_saver.py | 9 ++++++--- src/test/uvc_camera/test_uvc_camera.py | 7 ++++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/config/machine_settings/laptop.ini b/config/machine_settings/laptop.ini index 979c931..05750e2 100644 --- a/config/machine_settings/laptop.ini +++ b/config/machine_settings/laptop.ini @@ -4,7 +4,7 @@ description = LAPTOP [hardware_config] archive_synchronizer: absent galaxy_camera: absent -uvc_camera: absent +uvc_camera: present label_printer: present neo_pixels: absent remote_api: absent @@ -21,4 +21,13 @@ model: t3l [recipe] part_number_field: pn recipe_name_field: rc -label_template_field: modello_etichetta \ No newline at end of file +label_template_field: modello_etichetta + +[uvc_camera] +horizontal_resolution: 3264 +vertical_resolution: 2448 +exposure_time: 1000 +focus: 235 +balance_red: 1 +balance_green: 1.0 +balance_blue: 1.0 diff --git a/src/components/vision_saver.py b/src/components/vision_saver.py index 94b942f..0dc8fdc 100755 --- a/src/components/vision_saver.py +++ b/src/components/vision_saver.py @@ -28,9 +28,9 @@ class VisionSaver(Component): self.time_format = self.config[self.name]["time_format"] @Component.reconfig_on_error - def save(self, save_time=None, suffix=None, frame=None, vision=None, resize=None, mask=None): + def save(self, save_time=None, suffix=None, frame=None, vision=None, resize=None, mask=None,location=None): self.remove_older_images_if_needed() - if type(save_time) is None: + if save_time is None: save_time = datetime.now() else: if type(save_time) is float: @@ -40,7 +40,9 @@ class VisionSaver(Component): if type(save_time) is not datetime: raise ValueError(f"save_time must be float int or datetime, not {type(save_time)}") timestamp = save_time.strftime(self.time_format) - save_dir = self.location / save_time.strftime("%Y") / save_time.strftime("%m") + save_location = self.location if location is None else Path(location) + save_dir = save_location / save_time.strftime("%Y") / save_time.strftime("%m") + os.makedirs(save_dir, exist_ok=True) out_paths = [] if frame is not None: @@ -83,6 +85,7 @@ class VisionSaver(Component): json.dump(vision, f) return list(map(str, out_paths)) + def remove_older_images_if_needed(self): if self.minimum_disk_free_space_gb is None: return diff --git a/src/test/uvc_camera/test_uvc_camera.py b/src/test/uvc_camera/test_uvc_camera.py index dc973ad..0c49bff 100644 --- a/src/test/uvc_camera/test_uvc_camera.py +++ b/src/test/uvc_camera/test_uvc_camera.py @@ -118,14 +118,15 @@ try: self.components["vision"].set_sources({"galaxy_camera": self.components["galaxy_camera"].out}) self.components["uvc_camera"].out.connect(self.update_gui) self.components["uvc_camera"].resume() - self.main_window = Main_Window() + self.main_window.btn_save_image.clicked.connect(self.save_frame) # SHOW MAIN WINDOW self.main_window.show() def update_gui(self,frame): if frame[0]["uvc_camera"] is not None: + self.frame = frame[0]["uvc_camera"] render = QPixmap.fromImage(self.components["vision"].render( frame[0]["uvc_camera"], detections=None, @@ -135,6 +136,10 @@ try: )) self.main_window.image_l.setPixmap(render.scaled(self.main_window.image_l.width(), self.main_window.image_l.height(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) + def save_frame(self): + self.components["vision_saver"].save(frame=self.frame, location="tmp") + + if __name__ == "__main__": app = QApplication(sys.argv) main = Main()