set ce_enable in tuning_utils

This commit is contained in:
Joe Knapper 2025-10-09 15:36:01 +01:00
parent 94541b2d4f
commit 909de1709d
2 changed files with 32 additions and 0 deletions

View file

@ -826,6 +826,17 @@ class StreamingPiCamera2(BaseCamera):
tf_utils.set_static_geq(self.tuning, offset)
self._initialise_picamera()
@lt.thing_action
def set_ce_enable_to_off(self) -> None:
"""Set the contrast enhancement to disabled.
Adaptive contrast enhancement modifies settings to adapt to each field
of view, causing inconsistent settings when capturing.
"""
with self._streaming_picamera(pause_stream=True):
tf_utils.set_ce_to_disabled(self.tuning)
self._initialise_picamera()
@lt.thing_action
def full_auto_calibrate(self, portal: lt.deps.BlockingPortal) -> None:
"""Perform a full auto-calibration.
@ -843,6 +854,7 @@ class StreamingPiCamera2(BaseCamera):
self.flat_lens_shading()
self.auto_expose_from_minimum()
self.set_static_green_equalisation()
self.set_ce_enable_to_off()
self.calibrate_lens_shading()
self.reset_ccm()
self.calibrate_white_balance()

View file

@ -104,6 +104,26 @@ def geq_is_static(tuning: dict) -> bool:
return geq["offset"] == 65535
def set_ce_to_disabled(
tuning: dict,
) -> None:
"""Update the ``rpi.ce_enable`` section of a camera tuning dict.
:param tuning: the raspberry pi tuning file. This will be updated in-place to
set ce_enable to 0.
"""
contrast = Picamera2.find_tuning_algo(tuning, "rpi.contrast")
contrast["ce_enable"] = (
0 # disable ce_enable to prevent adaptive contrast enhancement
)
def ce_enable_is_static(tuning: dict) -> bool:
"""Whether the ce_enable flag is disabled."""
contrast = Picamera2.find_tuning_algo(tuning, "rpi.contrast")
return contrast["ce_enable"] == 0
def copy_alsc_section(from_tuning: dict, to_tuning: dict) -> None:
"""Copy the ``rpi.alsc`` algorithm from one tuning to another.