From 0351c19ebaa96b965fb955870f6c28bdf85fad85 Mon Sep 17 00:00:00 2001 From: ABelliqueux Date: Wed, 5 Mar 2025 17:32:25 +0100 Subject: [PATCH] Fix showmewebcam class --- frame_opencv.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/frame_opencv.py b/frame_opencv.py index f2e0db6..8e20035 100644 --- a/frame_opencv.py +++ b/frame_opencv.py @@ -85,6 +85,7 @@ class webcam(): 'white_balance_temperature': dict(min=0, max=10000, step=1000, default=4000, value=8000), 'white_balance_automatic' : dict(min=0, max=1, step=1, default=0, value=0), # Auto wb 'power_line_frequency': dict(min=0, max=2, step=1, default=2, value=2), # power_line_frequency + 'sharpness': dict(min=-100, max=100, step=1, default=0, value=10), } self.cam_settings_map = { 'white_balance_auto_preset': 'white_balance_temperature', @@ -185,6 +186,7 @@ class webcam(): setting = setting[0] if setting in self.cam_settings_map: setting = self.cam_settings_map[setting] + print(setting) if setting in self.camera_current_settings: self.increment_setting(setting, value) cmd += ' -c {}={}' @@ -212,7 +214,7 @@ class webcam(): self.og_frame = cv2.flip(self.og_frame, -1) def focus(self, direction:str='-'): - pass + self.apply_setting(['lenspos'], 1) def reset_picture_settings(self): self.apply_setting() @@ -231,12 +233,23 @@ class showmewebcam(webcam): 'horizontal_flip': dict(min=0, max=1, step=1, default=camera_settings['hflip'], value=camera_settings['hflip']), 'vertical_flip': dict(min=0, max=1, step=1, default=camera_settings['vflip'], value=camera_settings['vflip']), 'video_bitrate': dict(min=25000000, max=25000000, step=10000, default=camera_settings['video_bitrate'], value=camera_settings['video_bitrate']), + 'power_line_frequency': dict(min=0, max=2, step=1, default=2, value=2), # power_line_frequency + 'sharpness': dict(min=-100, max=100, step=1, default=0, value=10), + 'exposure_time_absolute': dict(min=1, max=1000, step=30, default=1000, value=1000), + } + self.cam_settings_map = { + 'anti_flicker': 'power_line_frequency', + 'lenspos': 'sharpness', + 'exposure': 'exposure_time_absolute' } def apply_setting(self, to_set:list=None, inc:int=0): - self.cmd, self.args = self.build_v4l2_cmd(to_set) - self.serialutils.send_serial_cmd(self.serialutils.find_cam_port(), self.cmd.format(*self.args)) + cmd = self.build_v4l2_cmd(to_set) + self.serialutils.send_serial_cmd(self.serialutils.find_cam_port(), cmd) return self.camera_current_settings + + def flip_image(self): + self.apply_setting(['horizontal_flip', 'vertical_flip']) class picam(): @@ -1108,16 +1121,13 @@ def main(args): elif (k%256 == 113): print(_("Anti-flicker mode")) cam.apply_setting(['anti_flicker'], True) - print(cam.camera_current_settings['anti_flicker']['value']) # Exposure : key S or maj A elif (k%256 == 115) or (k%256 == 65): print(_("Inc. exposure")) cam.apply_setting(['exposure'], 1) - print(cam.camera_current_settings['exposure']['value']) elif (k%256 == 90): print(_("Dec. exposure")) cam.apply_setting(['exposure'], -1) - print(cam.camera_current_settings['exposure']['value']) # SPACE or numpad 0 pressed elif (k%256 == 32) or (k%256 == 48) or (k%256 == 176): print(_("Capture frame"))