Metadata-Version: 2.3
Name: bbo-calibcamlib
Version: 0.3.12
Summary: Library to work with calibration from bbo-calibcam
Project-URL: Homepage, https://github.com/bbo-lab/calibcamlib
Author-email: "BBO-lab @ caesar" <kay-michael.voit@caesar.de>
License: BSD-3-Clause
License-File: LICENSE
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: numpy
Requires-Dist: pyyaml
Requires-Dist: scipy
Description-Content-Type: text/markdown

# calibcamlib
Library to work with calibration from bbo-calibcam

## Installation

Install via pip as `bbo-calibcamlib`.

## Usage

Load a calibration with

```python
cs = calibcamlib.Camerasystem.load([PATH TO multicam_calibration.yml])
```

Use calibrated camera system with

```python
coords2d = cs.project(self, X, offsets=None)
        # Project points in space of shape np.array((..., 3)) to all cameras.
        # Returns image coordinates np.array((N_CAMS, ..., 2))

dirs, cam_pos = cs.get_camera_lines(self, x, offsets=None)
        # Get camera lines corresponding to image coordinates in shape np.array((N_CAMS, ..., 2)) for all cameras.
        # Returns directions from camera np.array((N_CAMS, ..., 3)) and camera positions np.array((N_CAMS, ..., 3))
        #  in world coordinates (for direct triangulation)

coords3d = cs.triangulate(self, x, offsets=None)
        # Triangulate image coordinates in shape np.array((N_CAMS, ..., 2)) by minimizing reprojection error.
        # Returns 3d points np.array((..., 3)) in world coordinates.

coords3d = cs.triangulate_3derr(self, x, offsets=None)
        # Triangulate image coordinates in shape np.array((N_CAMS, ..., 2)) by finding the closest point to camera lines
        # Returns 3d points np.array((..., 3)) in world coordinates.
```