Fix showmewebcam class

This commit is contained in:
ABelliqueux 2025-03-05 17:32:25 +01:00
parent 85d31def6f
commit 0351c19eba
1 changed files with 16 additions and 6 deletions

View File

@ -85,6 +85,7 @@ class webcam():
'white_balance_temperature': dict(min=0, max=10000, step=1000, default=4000, value=8000), '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 '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 '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 = { self.cam_settings_map = {
'white_balance_auto_preset': 'white_balance_temperature', 'white_balance_auto_preset': 'white_balance_temperature',
@ -185,6 +186,7 @@ class webcam():
setting = setting[0] setting = setting[0]
if setting in self.cam_settings_map: if setting in self.cam_settings_map:
setting = self.cam_settings_map[setting] setting = self.cam_settings_map[setting]
print(setting)
if setting in self.camera_current_settings: if setting in self.camera_current_settings:
self.increment_setting(setting, value) self.increment_setting(setting, value)
cmd += ' -c {}={}' cmd += ' -c {}={}'
@ -212,7 +214,7 @@ class webcam():
self.og_frame = cv2.flip(self.og_frame, -1) self.og_frame = cv2.flip(self.og_frame, -1)
def focus(self, direction:str='-'): def focus(self, direction:str='-'):
pass self.apply_setting(['lenspos'], 1)
def reset_picture_settings(self): def reset_picture_settings(self):
self.apply_setting() self.apply_setting()
@ -231,13 +233,24 @@ class showmewebcam(webcam):
'horizontal_flip': dict(min=0, max=1, step=1, default=camera_settings['hflip'], value=camera_settings['hflip']), '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']), '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']), '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): def apply_setting(self, to_set:list=None, inc:int=0):
self.cmd, self.args = self.build_v4l2_cmd(to_set) cmd = self.build_v4l2_cmd(to_set)
self.serialutils.send_serial_cmd(self.serialutils.find_cam_port(), self.cmd.format(*self.args)) self.serialutils.send_serial_cmd(self.serialutils.find_cam_port(), cmd)
return self.camera_current_settings return self.camera_current_settings
def flip_image(self):
self.apply_setting(['horizontal_flip', 'vertical_flip'])
class picam(): class picam():
def __init__(self): def __init__(self):
@ -1108,16 +1121,13 @@ def main(args):
elif (k%256 == 113): elif (k%256 == 113):
print(_("Anti-flicker mode")) print(_("Anti-flicker mode"))
cam.apply_setting(['anti_flicker'], True) cam.apply_setting(['anti_flicker'], True)
print(cam.camera_current_settings['anti_flicker']['value'])
# Exposure : key S or maj A # Exposure : key S or maj A
elif (k%256 == 115) or (k%256 == 65): elif (k%256 == 115) or (k%256 == 65):
print(_("Inc. exposure")) print(_("Inc. exposure"))
cam.apply_setting(['exposure'], 1) cam.apply_setting(['exposure'], 1)
print(cam.camera_current_settings['exposure']['value'])
elif (k%256 == 90): elif (k%256 == 90):
print(_("Dec. exposure")) print(_("Dec. exposure"))
cam.apply_setting(['exposure'], -1) cam.apply_setting(['exposure'], -1)
print(cam.camera_current_settings['exposure']['value'])
# SPACE or numpad 0 pressed # SPACE or numpad 0 pressed
elif (k%256 == 32) or (k%256 == 48) or (k%256 == 176): elif (k%256 == 32) or (k%256 == 48) or (k%256 == 176):
print(_("Capture frame")) print(_("Capture frame"))