Load tuning files in without using Picamera2
This commit is contained in:
parent
a2900b0c16
commit
cec6f4af73
1 changed files with 16 additions and 16 deletions
|
|
@ -6,34 +6,34 @@ the future.
|
||||||
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from picamera2 import Picamera2
|
|
||||||
import numpy as np
|
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
class TuningFileError(RuntimeError):
|
||||||
|
"""Raised if the tuning file cannot be loaded for any reason."""
|
||||||
|
|
||||||
|
|
||||||
def load_default_tuning(sensor_model: str) -> dict:
|
def load_default_tuning(sensor_model: str) -> dict:
|
||||||
"""Load the default tuning file for the camera.
|
"""Load the default tuning file for the camera.
|
||||||
|
|
||||||
This will load the tuning file based on the specified sensor model.
|
This will load the tuning file based on the specified sensor model.
|
||||||
"""
|
"""
|
||||||
fname = f"{sensor_model}.json"
|
fname = f"{sensor_model}.json"
|
||||||
custom_path = os.path.join(THIS_DIR, 'tuning_files', fname)
|
# Note the vc4 here. This locks us to Pi4. We will need to update this to support
|
||||||
|
# the Raspberry Pi 5.
|
||||||
|
tuning_path = os.path.join(THIS_DIR, "tuning_files", "vc4", fname)
|
||||||
|
|
||||||
# Attempt to load custom tuning file from OpenFlexure settings
|
|
||||||
if os.path.isfile(custom_path):
|
|
||||||
return Picamera2.load_tuning_file(fname, dir=os.path.join(THIS_DIR, 'tuning_files'))
|
|
||||||
try:
|
try:
|
||||||
return Picamera2.load_tuning_file(fname)
|
with open(tuning_path, "r") as fp:
|
||||||
except RuntimeError:
|
return json.load(fp)
|
||||||
tuning_dir = "/usr/share/libcamera/ipa/raspberrypi"
|
except (json.decoder.JSONDecodeError, IOError) as e:
|
||||||
# from picamera2 v0.3.9
|
raise TuningFileError(f"Could not load tuning from {tuning_path}.") from e
|
||||||
# The directory above has been removed from the search path seems
|
|
||||||
# odd - as that's where the files currently are on a default
|
|
||||||
# Raspbian image. This may need updating if the files have moved
|
|
||||||
# in future updates to the system libcamera package
|
|
||||||
return Picamera2.load_tuning_file(fname, dir=tuning_dir)
|
|
||||||
|
|
||||||
|
|
||||||
def find_tuning_algo(tuning: dict[str, dict], name: str) -> dict[str, Any]:
|
def find_tuning_algo(tuning: dict[str, dict], name: str) -> dict[str, Any]:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue