Make triangulation a zero-copy pure function

This commit is contained in:
2026-03-11 22:29:21 +08:00
parent 5bed0f0aaf
commit 24f74c87f1
10 changed files with 596 additions and 947 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
from collections.abc import Sequence
from typing import TYPE_CHECKING
from ._core import Camera, Triangulator
from ._core import Camera, triangulate_poses
if TYPE_CHECKING:
import numpy as np
@@ -28,7 +28,7 @@ def pack_poses_2d(
__all__ = [
"Camera",
"Triangulator",
"convert_cameras",
"pack_poses_2d",
"triangulate_poses",
]
+19 -8
View File
@@ -1,19 +1,30 @@
from __future__ import annotations
from collections.abc import Mapping, Sequence
from typing import Any, TypeAlias
from collections.abc import Sequence
from typing import TypeAlias, TypedDict
import numpy as np
import numpy.typing as npt
from ._core import Camera
CameraLike = Camera | Mapping[str, Any]
PoseViewLike: TypeAlias = (
npt.NDArray[np.generic]
| Sequence[Sequence[Sequence[float]]]
| Sequence[Sequence[float]]
)
Matrix3x3Like: TypeAlias = Sequence[Sequence[float]]
VectorLike: TypeAlias = Sequence[float]
PoseViewLike: TypeAlias = npt.NDArray[np.generic] | Sequence[Sequence[Sequence[float]]] | Sequence[Sequence[float]]
class CameraDict(TypedDict, total=False):
name: str
K: Matrix3x3Like
DC: VectorLike
R: Matrix3x3Like
T: Sequence[Sequence[float]]
width: int
height: int
type: str
CameraLike = Camera | CameraDict
def convert_cameras(cameras: Sequence[CameraLike]) -> list[Camera]: