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_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"))