Skip to main content

dreifus lifts your 3D camera experience and facilitates computer vision applications

Project description

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)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dreifus-0.1.3.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dreifus-0.1.3-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file dreifus-0.1.3.tar.gz.

File metadata

  • Download URL: dreifus-0.1.3.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.0

File hashes

Hashes for dreifus-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d968fab60ca658b14565c82ee5854db2821914a4848b466ed6fd6e260cc94c54
MD5 c6258d74c08f5dfb674850d744cd2bd8
BLAKE2b-256 1119fc08188e79ff8f076fd1935198c6638cd0371f884c2f8cf2180661337e27

See more details on using hashes here.

File details

Details for the file dreifus-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: dreifus-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.0

File hashes

Hashes for dreifus-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5c179dc4ecba4ba030d38da229d370dfd5e0884dae4eb3cea89667a8f0696902
MD5 ed0c60aaaa06c2d9661c2b06f5bfaff9
BLAKE2b-256 ec8668f90f337e8b5bd1022726333e7f77ce4bef7e6e4fe809c85ae4331e3a00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page