CameraManager: only apply values that are set

This commit is contained in:
Thomas Farstrike
2026-02-11 22:40:24 +01:00
parent b0dd402f92
commit f9b200584a
+54 -32
View File
@@ -262,100 +262,122 @@ class CameraManager:
try:
# Basic image adjustments
brightness = prefs.get_int("brightness")
cam.set_brightness(brightness)
if brightness is not None:
cam.set_brightness(brightness)
contrast = prefs.get_int("contrast")
cam.set_contrast(contrast)
if contrast is not None:
cam.set_contrast(contrast)
saturation = prefs.get_int("saturation")
cam.set_saturation(saturation)
if saturation is not None:
cam.set_saturation(saturation)
# Orientation
hmirror = prefs.get_bool("hmirror")
cam.set_hmirror(hmirror)
if hmirror is not None:
cam.set_hmirror(hmirror)
vflip = prefs.get_bool("vflip")
cam.set_vflip(vflip)
if vflip is not None:
cam.set_vflip(vflip)
# Special effect
special_effect = prefs.get_int("special_effect")
cam.set_special_effect(special_effect)
if special_effect is not None:
cam.set_special_effect(special_effect)
# Exposure control (apply master switch first, then manual value)
exposure_ctrl = prefs.get_bool("exposure_ctrl")
cam.set_exposure_ctrl(exposure_ctrl)
if not exposure_ctrl:
if exposure_ctrl is not None:
cam.set_exposure_ctrl(exposure_ctrl)
else:
aec_value = prefs.get_int("aec_value")
cam.set_aec_value(aec_value)
if aec_value is not None:
cam.set_aec_value(aec_value)
# Mode-specific default comes from constructor
ae_level = prefs.get_int("ae_level")
cam.set_ae_level(ae_level)
if ae_level is not None:
cam.set_ae_level(ae_level)
aec2 = prefs.get_bool("aec2")
cam.set_aec2(aec2)
if aec2 is not None:
cam.set_aec2(aec2)
# Gain control (apply master switch first, then manual value)
gain_ctrl = prefs.get_bool("gain_ctrl")
cam.set_gain_ctrl(gain_ctrl)
if not gain_ctrl:
if gain_ctrl is not None:
cam.set_gain_ctrl(gain_ctrl)
else:
agc_gain = prefs.get_int("agc_gain")
cam.set_agc_gain(agc_gain)
if agc_gain is None:
cam.set_agc_gain(agc_gain)
gainceiling = prefs.get_int("gainceiling")
cam.set_gainceiling(gainceiling)
if gainceiling is not None:
cam.set_gainceiling(gainceiling)
# White balance (apply master switch first, then mode)
whitebal = prefs.get_bool("whitebal")
cam.set_whitebal(whitebal)
if not whitebal:
if whitebal is not None:
cam.set_whitebal(whitebal)
else:
wb_mode = prefs.get_int("wb_mode")
cam.set_wb_mode(wb_mode)
if wb_mode is not None:
cam.set_wb_mode(wb_mode)
awb_gain = prefs.get_bool("awb_gain")
cam.set_awb_gain(awb_gain)
if awb_gain is not None:
cam.set_awb_gain(awb_gain)
# Sensor-specific settings (try/except for unsupported sensors)
try:
sharpness = prefs.get_int("sharpness")
cam.set_sharpness(sharpness)
if sharpness is not None:
cam.set_sharpness(sharpness)
except:
pass # Not supported on OV2640?
try:
denoise = prefs.get_int("denoise")
cam.set_denoise(denoise)
if denoise is not None:
cam.set_denoise(denoise)
except:
pass # Not supported on OV2640?
# Advanced corrections
colorbar = prefs.get_bool("colorbar")
cam.set_colorbar(colorbar)
if colorbar is not None:
cam.set_colorbar(colorbar)
dcw = prefs.get_bool("dcw")
cam.set_dcw(dcw)
if dcw is not None:
cam.set_dcw(dcw)
bpc = prefs.get_bool("bpc")
cam.set_bpc(bpc)
if bpc is not None:
cam.set_bpc(bpc)
wpc = prefs.get_bool("wpc")
cam.set_wpc(wpc)
if wpc is not None:
cam.set_wpc(wpc)
# Mode-specific default comes from constructor
raw_gma = prefs.get_bool("raw_gma")
print(f"applying raw_gma: {raw_gma}")
cam.set_raw_gma(raw_gma)
if raw_gma is not None:
print(f"applying raw_gma: {raw_gma}")
cam.set_raw_gma(raw_gma)
lenc = prefs.get_bool("lenc")
cam.set_lenc(lenc)
if lenc is not None:
cam.set_lenc(lenc)
# JPEG quality (only relevant for JPEG format)
#try:
# quality = prefs.get_int("quality", 85)
# cam.set_quality(quality)
# if quality is not None:
# cam.set_quality(quality)
#except:
# pass # Not in JPEG mode