Source code for xrprimer.data_structure.camera.pinhole_camera

import copy
import logging
from typing import Union

from xrprimer_cpp.camera import \
    PinholeCameraParameter as PinholeCameraParameter_cpp
from .camera import BaseCameraParameter


[docs]class PinholeCameraParameter(PinholeCameraParameter_cpp, BaseCameraParameter): ATTR_NAMES = BaseCameraParameter.ATTR_NAMES.copy() def __init__(self, K: Union[list, None] = None, R: Union[list, None] = None, T: Union[list, None] = None, name: str = 'default', height: int = 1080, width: int = 1920, world2cam: bool = True, convention: str = 'opencv', logger: Union[None, str, logging.Logger] = None) -> None: """A camera parameter class for pinhole camera model. This class has no distortion attributes and functions. Args: K (Union[list, np.ndarray, None], optional): Nested list of float32, 4x4 or 3x3 K mat. Defaults to None, 4x4 zeros. R (Union[list, np.ndarray, None], optional): Nested list of float32, 3x3 rotation mat. Defaults to None, 3x3 identity. T (Union[list, np.ndarray, None], optional): List of float32, T vector. Defaults to None, zero vector. name (str, optional): Name of this camera. Defaults to 'default'. height (int, optional): Height of the image shot by this camera. Defaults to 1080. width (int, optional): Width of the image shot by this camera. Defaults to 1920. world2cam (bool, optional): Whether the R, T transform points from world space to camera space. Defaults to True. convention (str, optional): Convention name of this camera. Defaults to 'opencv'. logger (Union[None, str, logging.Logger], optional): Logger for logging. If None, root logger will be selected. Defaults to None. """ PinholeCameraParameter_cpp.__init__(self) BaseCameraParameter.__init__( self, K=K, R=R, T=T, name=name, height=height, width=width, world2cam=world2cam, convention=convention, logger=logger)
[docs] def clone(self) -> 'PinholeCameraParameter': """Clone a new CameraParameter instance like self. Returns: PinholeCameraParameter """ new_cam_param = self.__class__( K=copy.deepcopy(self.get_intrinsic(k_dim=4)), R=copy.deepcopy(self.extrinsic_r), T=copy.deepcopy(self.extrinsic_t), name=self.name, height=self.height, width=self.width, world2cam=self.world2cam, convention=self.convention, logger=self.logger) return new_cam_param
[docs] def SaveFile(self, filename: str) -> bool: """Dump camera name and parameters to a json file. Args: filename (str): Path to the dumped json file. Returns: bool: True if save succeed. """ return PinholeCameraParameter_cpp.SaveFile(self, filename)
[docs] def LoadFile(self, filename: str) -> bool: """Load camera name and parameters from a dumped json file. Args: filename (str): Path to the dumped json file. Returns: bool: True if load succeed. """ return PinholeCameraParameter_cpp.LoadFile(self, filename)