Code format and linting
This commit is contained in:
parent
bb303d4766
commit
87f636ecc0
2 changed files with 15 additions and 15 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from typing import Tuple, Iterator
|
from typing import Iterator, Tuple
|
||||||
|
|
||||||
import labthings.fields as fields
|
import labthings.fields as fields
|
||||||
from flask import abort
|
from flask import abort
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ picamera.lens_shading_table = lst
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from typing import List, Optional, Tuple, NamedTuple
|
from typing import List, NamedTuple, Optional, Tuple
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from picamerax import PiCamera
|
from picamerax import PiCamera
|
||||||
|
|
@ -77,9 +77,7 @@ def adjust_exposure_to_setpoint(camera: PiCamera, setpoint: int):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
def set_minimum_exposure(
|
def set_minimum_exposure(camera: PiCamera):
|
||||||
camera: PiCamera
|
|
||||||
):
|
|
||||||
"""Enable manual exposure, with low gain and shutter speed
|
"""Enable manual exposure, with low gain and shutter speed
|
||||||
|
|
||||||
We set exposure mode to manual, analog and digital gain
|
We set exposure mode to manual, analog and digital gain
|
||||||
|
|
@ -96,17 +94,16 @@ def set_minimum_exposure(
|
||||||
camera.shutter_speed = 1
|
camera.shutter_speed = 1
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
|
||||||
class ExposureTest(NamedTuple):
|
class ExposureTest(NamedTuple):
|
||||||
"""Record the results of testing the camera's current exposure settings"""
|
"""Record the results of testing the camera's current exposure settings"""
|
||||||
|
|
||||||
level: int
|
level: int
|
||||||
shutter_speed: int
|
shutter_speed: int
|
||||||
analog_gain: float
|
analog_gain: float
|
||||||
|
|
||||||
|
|
||||||
def test_exposure_settings(
|
def test_exposure_settings(camera: PiCamera, percentile: float) -> ExposureTest:
|
||||||
camera: PiCamera,
|
|
||||||
percentile: float
|
|
||||||
) -> ExposureTest:
|
|
||||||
"""Evaluate current exposure settings using a raw image
|
"""Evaluate current exposure settings using a raw image
|
||||||
|
|
||||||
We will acquire a raw image and calculate the given percentile
|
We will acquire a raw image and calculate the given percentile
|
||||||
|
|
@ -134,6 +131,7 @@ def test_exposure_settings(
|
||||||
)
|
)
|
||||||
return ExposureTest(max_brightness, shutter_speed, analog_gain)
|
return ExposureTest(max_brightness, shutter_speed, analog_gain)
|
||||||
|
|
||||||
|
|
||||||
def check_convergence(test: ExposureTest, target: int, tolerance: float):
|
def check_convergence(test: ExposureTest, target: int, tolerance: float):
|
||||||
"""Check whether the brightness is within the specified target range"""
|
"""Check whether the brightness is within the specified target range"""
|
||||||
converged = abs(test.level - target) < target * tolerance
|
converged = abs(test.level - target) < target * tolerance
|
||||||
|
|
@ -173,8 +171,12 @@ def adjust_shutter_and_gain_from_raw(
|
||||||
than just ``np.max()``.
|
than just ``np.max()``.
|
||||||
"""
|
"""
|
||||||
if target_white_level * (tolerance + 1) >= 959:
|
if target_white_level * (tolerance + 1) >= 959:
|
||||||
raise ValueError("The target level is too high - a saturated image would be considered successful. target_white_level * (tolerance + 1) must be less than 959.")
|
raise ValueError(
|
||||||
|
"The target level is too high - a saturated image would be "
|
||||||
|
"considered successful. target_white_level * (tolerance + 1) "
|
||||||
|
"must be less than 959."
|
||||||
|
)
|
||||||
|
|
||||||
set_minimum_exposure(camera)
|
set_minimum_exposure(camera)
|
||||||
|
|
||||||
# We start with very low exposure settings and work up
|
# We start with very low exposure settings and work up
|
||||||
|
|
@ -215,11 +217,9 @@ def adjust_shutter_and_gain_from_raw(
|
||||||
if camera.analog_gain == test.analog_gain:
|
if camera.analog_gain == test.analog_gain:
|
||||||
logging.info("Gain has maxed out.")
|
logging.info("Gain has maxed out.")
|
||||||
break
|
break
|
||||||
|
|
||||||
if check_convergence(test, target_white_level, tolerance):
|
if check_convergence(test, target_white_level, tolerance):
|
||||||
logging.info(
|
logging.info(f"Brightness has converged to within {tolerance * 100 :.0f}%.")
|
||||||
f"Brightness has converged to within {tolerance * 100 :.0f}%."
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
logging.warning(
|
logging.warning(
|
||||||
f"Failed to reach target brightness of {target_white_level}."
|
f"Failed to reach target brightness of {target_white_level}."
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue