Unify camera model into immutable factory-built type

This commit is contained in:
2026-03-12 00:24:02 +08:00
parent c23f25f871
commit 31c4690121
8 changed files with 177 additions and 172 deletions
+2
View File
@@ -19,6 +19,7 @@ from ._core import (
TriangulationTrace,
build_pair_candidates,
filter_pairs_with_previous_poses,
make_camera,
triangulate_debug,
triangulate_poses,
)
@@ -80,6 +81,7 @@ __all__ = [
"build_pair_candidates",
"convert_cameras",
"filter_pairs_with_previous_poses",
"make_camera",
"make_triangulation_config",
"pack_poses_2d",
"triangulate_debug",
+13 -11
View File
@@ -6,7 +6,7 @@ from typing import Literal, TypeAlias, TypedDict
import numpy as np
import numpy.typing as npt
from ._core import Camera, CameraModel, TriangulationConfig, TriangulationOptions
from ._core import Camera, CameraModel, TriangulationConfig, TriangulationOptions, make_camera
Matrix3x3Like: TypeAlias = Sequence[Sequence[float]]
VectorLike: TypeAlias = Sequence[float]
@@ -64,17 +64,19 @@ def convert_cameras(cameras: Sequence[CameraLike]) -> list[Camera]:
converted.append(cam)
continue
camera = Camera()
camera.name = str(cam["name"])
camera.K = cam["K"]
camera_model = _coerce_camera_model(cam.get("model", cam.get("type", "pinhole")))
camera.DC = _coerce_distortion(cam["DC"], camera_model)
camera.R = cam["R"]
camera.T = cam["T"]
camera.width = int(cam["width"])
camera.height = int(cam["height"])
camera.model = camera_model
converted.append(camera)
converted.append(
make_camera(
str(cam["name"]),
cam["K"],
_coerce_distortion(cam["DC"], camera_model),
cam["R"],
cam["T"],
int(cam["width"]),
int(cam["height"]),
camera_model,
)
)
return converted