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.28.tar.gz (37.9 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.28-py3-none-any.whl (39.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dreifus-0.1.28.tar.gz
  • Upload date:
  • Size: 37.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for dreifus-0.1.28.tar.gz
Algorithm Hash digest
SHA256 1cfd45161b360362ea69d62f3f6f1db75728d528a0b921fdc50d2073c54daa55
MD5 e4556592d8a537dc1af3e553df17ad51
BLAKE2b-256 565b40d3e983d84186a618e0c03255e4175b0673d91fdd963f9878388693a5de

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dreifus-0.1.28-py3-none-any.whl
  • Upload date:
  • Size: 39.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.6

File hashes

Hashes for dreifus-0.1.28-py3-none-any.whl
Algorithm Hash digest
SHA256 7b30c65e34047de0c1c8492441c149040e60f2ca724c601e303c115fd1724434
MD5 da5df0d30360c9ec4012bff52c2b0d5f
BLAKE2b-256 d209b25e9ba01035e0436f79c4f28aaf62b4d8ad4bd02f7a2354fefc8e6a363c

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