Skip to main content

dreifus

OpenCV, OpenGL, Pytorch3D, ... you never know which camera coordinate convention you are currently using?
You always have to try invert() on your "pose" matrices because you never know whether they are cam2world or world2cam?
The dreifus library is what you need!
dreifus (German for tripod) assists you in dealing with 3D cameras in Python.

1. Installation

pip install dreifus

2. Usage

2.1. Extrinsic (Pose) matrices

Translating between coordinate conventions made easy:

from dreifus.matrix import Pose, CameraCoordinateConvention, PoseType

# wrap some 4x4 extrinsic matrix
# Default assumed coordinate convention: OPEN_CV
# Default assumed pose type: WORLD_2_CAM 
pose = Pose(some_extrinsic_matrix, pose_type=..., camera_coordinate_convention=...)

# Translate between coordinate conventions
pose.change_camera_coordinate_convention(CameraCoordinateConvention.OPEN_GL)

# Ensure your pose transforms into the direction you expect
pose.change_pose_type(PoseType.CAM_2_WORLD)

2.2. Intrinsics

from dreifus.matrix import Intrinsics

intrinsics = Intrinsics(fx, fy, cx, cy)

# Adapt your intrinsics to images downscaled by a factor of 2x
intrinsics.rescale(0.5)

# Adapt your intrinsics to an image cropped at (50, 50) left-top
intrinsics.crop(50, 50)

3. Visualization

The visualization tools will automatically interpret your camera poses correctly, as long as you specified camera_coordinate_convention and pose_type correctly.

import pyvista as pv
from dreifus.pyvista import add_coordinate_axes, add_camera_frustum

pose = Pose(...)  # Some extrinsics
intrinsics = Intrinsics(...)  # Some intrinsics
image = ...  # Some images taken from that view

p = pv.Plotter()

add_coordinate_axes(p)
add_camera_frustum(p, pose, intrinsics, image=image)

p.show()

Render a pyvista scene from a specific camera:

import pyvista as pv
from dreifus.pyvista import render_from_camera

p = pv.Plotter(window_size=[IMG_W, IMG_H], off_screen=True)
p.background_color = (0, 0, 0, 0)

image = render_from_camera(p, pose, intrinsics)

Metadata

Release files for dreifus 0.1.28

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dreifus 0.1.28
File Size Uploaded
dreifus-0.1.28.tar.gz 37.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dreifus 0.1.28
File Interpreter ABI Platform
dreifus-0.1.28-py3-none-any.whl Python 3 none any Details

Total release size: 77.4 kB

Release files / dreifus-0.1.28.tar.gz

Download URL dreifus-0.1.28.tar.gz
Size 37.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1cfd45161b360362ea69d62f3f6f1db75728d528a0b921fdc50d2073c54daa55
BLAKE2b-256 checksum
How to use checksums
565b40d3e983d84186a618e0c03255e4175b0673d91fdd963f9878388693a5de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.6

Release files / dreifus-0.1.28-py3-none-any.whl

Download URL dreifus-0.1.28-py3-none-any.whl
Size 39.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b30c65e34047de0c1c8492441c149040e60f2ca724c601e303c115fd1724434
BLAKE2b-256 checksum
How to use checksums
d209b25e9ba01035e0436f79c4f28aaf62b4d8ad4bd02f7a2354fefc8e6a363c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.6

Release history Release notifications | RSS feed

This release

0.1.28 This release

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page