Skip to main content

Lightweight utility package for common computer vision tasks.

Project description

vito - Vision Tools

View on PyPI PyPI - Downloads Build Status Coverage Status License

Python utilities for common computer vision tasks. The goal of this package is to provide a lightweight python-only package for very basic image manipulation tasks, optical flow handling, pseudocoloring and camera geometry.

Examples

  • Pseudocoloring:
    from vito import imutils
    from vito import imvis
    
    # Load a single-channel image (data.dtype will be numpy.uint8)
    peaks = imutils.imread('peaks.png', mode='L')
    # Colorize it
    colorized = imvis.pseudocolor(peaks, limits=None, color_map=colormaps.colormap_viridis_rgb)
    imvis.imshow(colorized)
    
    # Load 16-bit depth stored as PNG (data.dtype will be numpy.int32)
    depth = imutils.imread('depth.png')
    # Colorize it
    colorized = imvis.pseudocolor(depth, limits=None, color_map=colormaps.colormap_turbo_rgb)
    imvis.imshow(colorized)
    
    Exemplary visualizations: colorizing via the turbo rainbow colormap (left); same data reduced to 11 bins colorized using viridis (right). Input data is obtained from two translated and scaled Gaussian distributions. Pseudocoloring Example
  • Optical flow:
    from vito import flowutils
    from vito import imvis
    
    # Load optical flow file
    flow = flowutils.floread('color_wheel.flo')
    # Colorize it
    colorized = flowutils.colorize_flow(flow)
    imvis.imshow(colorized)
    
    Exemplary visualization: Optical flow (standard color wheel visualization) and corresponding RGB frame for one frame of the MPI Sintel Flow dataset. Optical Flow Example
  • Pixelation:
    from vito import imutils
    from vito import imvis
    
    img = imutils.imread('homer.png')
    rects = [(80, 50, 67, 84), (257, 50, 82, 75)]  # (Left, Top, Width, Height)
    anon = imutils.apply_on_bboxes(img, rects, imutils.pixelate)
    imvis.imshow(anon)
    
    Exemplary visualization: anonymization example using imutils.apply_on_bboxes() as shown above, with Gaussian blur kernel (imutils.gaussian_blur(), left) and pixelation (imutils.pixelate(), right), respectively. Anonymization Example
  • For more examples (or if you prefer having a simple GUI to change visualization/analyze your data), see also the iminspect package (which uses vito under the hood).

Dependencies

  • numpy
  • Pillow

Changelog

  • 1.6.1
    • House keeping: Internal adaptations to fix deprecated (NumPy) and changed (PIL) library usage.
    • CI updates to PyPI's trusted publishing.
    • Code clean up (added type hints, docstrings, ...).
  • 1.6.0
    • Remove deprecated functionality (workarounds for Python versions older than 3.6).
    • Add type hints and update documentation.
    • Add parameter order check to imsave (that's the one thing I alwys mess up when coding without IDE).
    • imsave now creates the output directory structure if it did not exist.
  • 1.5.3
    • Mute initial notification about imshow backend.
    • Catch exception and adjust imshow backend if used with headless OpenCV.
  • 1.5.2
    • Changed imshow to skip waiting for user input if wait_ms=0.
    • Added (RGB) colormap handles for convenience.
    • Drop support for deprecated Python version 3.5.
  • 1.5.1
    • Changed handling of None inputs for image concatenation/stacking.
  • 1.5.0
    • Extends the imutils submodule (rotation, concatenation & noop).
    • Fix deprecation warnings with newer NumPy versions.
    • Extended test suite.
  • 1.4.1
    • Removes f-strings to fix compatibility for older python 3.5.
  • 1.4.0
    • Changed imvis.overlay to use a more intuitive signature.
    • Aliases for some cam_projections functions.
    • Spell-checked all files via pyspelling.
  • 1.3.4
    • Extended input handling for imutils (support single channel input to rgb2gray).
    • Aliases for some imutils functions.
    • Cleaning up tests, documentation, etc.
  • 1.3.3
    • Prevent nan values caused by floating point precision issues in the cam_projections submodule.
    • Remove the (empty) tracking submodule (to be added in a future release).
    • Update the submodule list.
  • 1.3.2
    • Support custom label maps in detection2d module.
    • Construct BoundingBoxes from relative representations.
  • 1.3.1
    • Relative BoundingBox representation.
    • Support label lookup for Detection instances directly.
  • 1.3.0
    • Common representations and utilities for 2D object detection via the detection2d module.
      • Detection class to encapsulate object detections.
      • BoundingBox class to work with axis-aligned bounding boxes.
  • 1.2.3
    • Support sampling from colormaps.
    • Adjust tests to updated PIL version.
  • 1.2.2
    • Use explicit copies in pseudocolor() to prevent immutable assignment destination errors.
  • 1.2.1
    • Explicitly handle invalid (NaN and infinite) inputs to pseudocolor().
  • 1.2.0
    • Add pixelation functionality for anonymization via imutils.
    • Add Gaussian blur to imutils.
  • 1.1.5
    • Extend projection utils.
  • 1.1.4
    • Explicitly handle None inputs to imutils.
  • 1.1.3
    • Fix transparent borders when padding.
  • 1.1.2
    • Add sanity checks to imutils which prevent interpreting optional PIL/cv2 parameters as custom parameters.
    • Add grayscale conversion to imutils.
  • 1.1.1
    • Maximum alpha channel value derived from data type.
  • 1.1.0
    • Added padding functionality.
  • 1.0.4
    • Improved test coverage.
    • Fixed potential future bugs - explicit handling of wrong/unexpected user inputs.
  • 1.0.3
    • Minor bug fix: handle invalid user inputs in imvis.
  • 1.0.2
    • Additional tests and minor improvements (potential bug fixes, especially for edge case inputs).
    • Ensure default image I/O parametrization always returns/saves/loads color images as RGB (even if OpenCV is available/used on your system).
  • 1.0.1
    • Fix colorizing boolean masks (where mask[:] = True or mask[:] = False).
  • 1.0.0
    • Rename flow package to flowutils.
  • 0.3.2
    • Rename colorization for optical flow.
  • 0.3.1
    • Fix colormaps.by_name() for grayscale.
  • 0.3.0
    • apply_on_bboxes() now supports optional kwargs to be passed on to the user-defined function handle.
    • Changed imread()'s default mode parameter to optional kwargs which are passed on to Pillow.
    • Raising error for non-existing files in imread()
    • Added colormaps.by_name() functionality.
    • Fixed bounding box clipping off-by-one issue.
    • Added imutils tests ensuring proper data types.
  • 0.2.0
    • Optical flow (Middlebury .flo format) I/O and visualization.
    • Support saving images.
    • Visualization utils for tracking results.
  • 0.1.1
    • Changed supported python versions for legacy tests.
  • 0.1.0
    • First actually useful release.
    • Contains most of the functionality of pvt (a library I developed throughout my studies).
      • cam_projections - projective geometry, lens distortion/rectification (Plumb Bob model), etc.
      • colormaps - colormap definitions for visualization (jet, parula, magma, viridis, etc.)
      • imutils - image loading, conversion, RoI handling (e.g. apply functions on several patches of an image).
      • imvis - visualization helpers, e.g. pseudocoloring or overlaying images.
      • pyutils - common python functions (timing code, string manipulation, list sorting/search, etc.)
  • 0.0.1
    • Initial public release.
    • Contains common python/language and camera projection utils.

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

vito-1.6.1.tar.gz (61.5 kB view details)

Uploaded Source

Built Distribution

vito-1.6.1-py3-none-any.whl (62.3 kB view details)

Uploaded Python 3

File details

Details for the file vito-1.6.1.tar.gz.

File metadata

  • Download URL: vito-1.6.1.tar.gz
  • Upload date:
  • Size: 61.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for vito-1.6.1.tar.gz
Algorithm Hash digest
SHA256 ccec147863fad1e82a0d46bb9ccdaec9ff960cdbb96303c5359488118b9479de
MD5 ea6b7173800663a138cb2b724109d9ad
BLAKE2b-256 b5839032c6dfd8bbe81a434dd5490f122edacc65bbb791dbe5d7c3d68bb22231

See more details on using hashes here.

File details

Details for the file vito-1.6.1-py3-none-any.whl.

File metadata

  • Download URL: vito-1.6.1-py3-none-any.whl
  • Upload date:
  • Size: 62.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for vito-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d836080f7229bc44e3b7805cbd531f6748c4d89b0abb48a1b546a82ad4dde2f
MD5 f30fbe555d0d44abd1657c3c12889386
BLAKE2b-256 ce707a8d4a917f58b3e50eb1abe638f01b9bee3c1bd08fa1d341d0df7ac5ad97

See more details on using hashes here.

Supported by

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