Simplify triangulation API with config struct
This commit is contained in:
@@ -6,6 +6,7 @@ from typing import TYPE_CHECKING
|
||||
from ._core import (
|
||||
Camera,
|
||||
CameraModel,
|
||||
TriangulationConfig,
|
||||
TriangulationOptions,
|
||||
CoreProposalDebug,
|
||||
FullProposalDebug,
|
||||
@@ -43,9 +44,29 @@ def pack_poses_2d(
|
||||
return _pack_poses_2d(views, joint_count=joint_count)
|
||||
|
||||
|
||||
def make_triangulation_config(
|
||||
cameras: "Sequence[CameraLike]",
|
||||
roomparams: "npt.NDArray[np.generic] | Sequence[Sequence[float]]",
|
||||
joint_names: "Sequence[str]",
|
||||
*,
|
||||
min_match_score: float = 0.95,
|
||||
min_group_size: int = 1,
|
||||
) -> TriangulationConfig:
|
||||
from ._helpers import make_triangulation_config as _make_triangulation_config
|
||||
|
||||
return _make_triangulation_config(
|
||||
cameras,
|
||||
roomparams,
|
||||
joint_names,
|
||||
min_match_score=min_match_score,
|
||||
min_group_size=min_group_size,
|
||||
)
|
||||
|
||||
|
||||
__all__ = [
|
||||
"Camera",
|
||||
"CameraModel",
|
||||
"TriangulationConfig",
|
||||
"TriangulationOptions",
|
||||
"CoreProposalDebug",
|
||||
"FullProposalDebug",
|
||||
@@ -59,6 +80,7 @@ __all__ = [
|
||||
"build_pair_candidates",
|
||||
"convert_cameras",
|
||||
"filter_pairs_with_previous_poses",
|
||||
"make_triangulation_config",
|
||||
"pack_poses_2d",
|
||||
"triangulate_debug",
|
||||
"triangulate_poses",
|
||||
|
||||
+27
-1
@@ -6,10 +6,11 @@ from typing import Literal, TypeAlias, TypedDict
|
||||
import numpy as np
|
||||
import numpy.typing as npt
|
||||
|
||||
from ._core import Camera, CameraModel
|
||||
from ._core import Camera, CameraModel, TriangulationConfig, TriangulationOptions
|
||||
|
||||
Matrix3x3Like: TypeAlias = Sequence[Sequence[float]]
|
||||
VectorLike: TypeAlias = Sequence[float]
|
||||
RoomParamsLike: TypeAlias = npt.NDArray[np.generic] | Sequence[Sequence[float]]
|
||||
PoseViewLike: TypeAlias = npt.NDArray[np.generic] | Sequence[Sequence[Sequence[float]]] | Sequence[Sequence[float]]
|
||||
|
||||
|
||||
@@ -129,3 +130,28 @@ def pack_poses_2d(
|
||||
packed[view_idx, :person_count, :, :] = array
|
||||
|
||||
return packed, counts
|
||||
|
||||
|
||||
def make_triangulation_config(
|
||||
cameras: Sequence[CameraLike],
|
||||
roomparams: RoomParamsLike,
|
||||
joint_names: Sequence[str],
|
||||
*,
|
||||
min_match_score: float = 0.95,
|
||||
min_group_size: int = 1,
|
||||
) -> TriangulationConfig:
|
||||
config = TriangulationConfig()
|
||||
config.cameras = convert_cameras(cameras)
|
||||
|
||||
roomparams_array = np.asarray(roomparams, dtype=np.float32)
|
||||
if roomparams_array.shape != (2, 3):
|
||||
raise ValueError("roomparams must have shape [2, 3].")
|
||||
config.roomparams = roomparams_array.tolist()
|
||||
|
||||
config.joint_names = [str(joint_name) for joint_name in joint_names]
|
||||
|
||||
options = TriangulationOptions()
|
||||
options.min_match_score = float(min_match_score)
|
||||
options.min_group_size = int(min_group_size)
|
||||
config.options = options
|
||||
return config
|
||||
|
||||
Reference in New Issue
Block a user