Skip to main content

Different ways of visualizing objects given bounding box data

Project description

bbox-visualizer

Documentation Status Test License: MIT Ruff PyPI version Downloads

This package helps users draw bounding boxes around objects, without doing the clumsy math that you'd need to do for positioning the labels. It also has a few different types of visualizations you can use for labeling objects after identifying them.

By default the bounding box points are expected in Pascal VOC format: (xmin, ymin, xmax, ymax). COCO and YOLO formats are also supported via the bbox_format keyword argument (see Bounding box formats).

Installation:

pip install bbox-visualizer

Quick Start

A complete example that loads an image, draws a labeled bounding box, and saves the result:

import cv2
import bbox_visualizer as bbv

img = cv2.imread("path/to/image.jpg")

# Bounding boxes use [x_min, y_min, x_max, y_max]
bbox = [150, 100, 450, 300]
label = "person"

img = bbv.draw_box(img, bbox, bbox_color=(0, 255, 0))
img = bbv.add_label(img, label, bbox)

cv2.imwrite("output.jpg", img)

All functions return a new image and never modify the input image, so keep the return value (as above) rather than relying on in-place changes.

For multiple objects, use the _multiple_ variants with parallel lists:

bboxes = [[150, 100, 450, 300], [500, 50, 700, 250]]
labels = ["person", "dog"]

img = bbv.draw_multiple_boxes(img, bboxes)
img = bbv.add_multiple_labels(img, labels, bboxes)

draw_multiple_boxes also accepts one color per box:

img = bbv.draw_multiple_boxes(img, bboxes, bbox_color=[(0, 255, 0), (0, 0, 255)])

The library logs fallback warnings (e.g., when a label doesn't fit) through Python's logging module. To silence them:

import logging

logging.getLogger("bbox_visualizer").setLevel(logging.ERROR)

Bounding box formats

Every drawing function accepts a bbox_format keyword argument. The default is Pascal VOC.

bbox_format Coordinates Scale
"voc" (default) [x_min, y_min, x_max, y_max] absolute pixels
"coco" [x_min, y_min, width, height] absolute pixels
"yolo" [x_center, y_center, width, height] normalized to [0, 1]
# COCO format: [x_min, y_min, width, height]
img = bbv.draw_box(img, [150, 100, 300, 200], bbox_format="coco")

# YOLO format: [x_center, y_center, width, height], normalized to [0, 1].
# Image dimensions are read from the image, so no extra arguments are needed.
img = bbv.draw_box(img, [0.5, 0.4, 0.3, 0.25], bbox_format="yolo")

# Works with the multiple-object variants too
img = bbv.draw_multiple_boxes(img, coco_bboxes, bbox_format="coco")

Internally all formats are converted to Pascal VOC before drawing.

Runnable scripts live in examples/:

  • quickstart.py — minimal example on a blank canvas
  • single_object.py — every single-object label style
  • multiple_objects.py — every multi-object label style
  • label_stress.py — awkward label strings through every style, for eyeballing label layout

cover

Photos by Joshua Earle, Jonas Weckschmied and Sherzod Max on Unsplash.

image function
bbox with label on top img = bbv.draw_box(img, bbox)
img = bbv.add_label(img, label, bbox, top=True)
bbox with T label img = bbv.draw_box(img, bbox)
img = bbv.add_T_label(img, label, bbox)
label with flag img = bbv.draw_flag_with_label(img, label, bbox)
bbox with label inside img = bbv.draw_box(img, bbox)
img = bbv.add_label(img, label, bbox, top=False)
label with opaque overlay img = bbv.draw_box(image, bbox, is_opaque=True)
img = bbv.add_label(img, label, bbox, draw_bg=False, top=False)
multiple bbox img = bbv.draw_multiple_boxes(img, bboxes)
img = bbv.add_multiple_labels(img, labels, bboxes)
multiple flags img = bbv.draw_multiple_flags_with_labels(img, labels, bboxes)
multiple T bbox img = bbv.draw_multiple_boxes(img, bboxes)
img = bbv.add_multiple_T_labels(img, labels, bboxes)

Note: The functions draw_rectangle and draw_multiple_rectangles are also available as aliases for draw_box and draw_multiple_boxes respectively. Both naming conventions work identically.

Tip: The draw_multiple_* and add_multiple_* functions are convenience helpers. For full control over your visualizations, call the single-box functions (draw_box, add_label, etc.) in a loop instead.

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

bbox_visualizer-1.0.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

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

bbox_visualizer-1.0.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file bbox_visualizer-1.0.0.tar.gz.

File metadata

  • Download URL: bbox_visualizer-1.0.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for bbox_visualizer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 546c6c477955b7c3cc4279e9f116eb080b3b827c444801c9d194130250a4dac2
MD5 43c6d4d747e9b4c6249da4ff2a725a86
BLAKE2b-256 a58b871ba16114f3d12ab25b4c5da63cec062d8fb9aee411b32350be5d574471

See more details on using hashes here.

Provenance

The following attestation bundles were made for bbox_visualizer-1.0.0.tar.gz:

Publisher: publish.yml on shoumikchow/bbox-visualizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bbox_visualizer-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: bbox_visualizer-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for bbox_visualizer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4029ce251f86225288613ac05233519bae4c787c288417645d3dac9cf15557e8
MD5 2f6612fb00a0add67a12d219e369e794
BLAKE2b-256 3749059ac1d41175ec36f993038b21f2c8454c1421e2ffb272ca7946c0125135

See more details on using hashes here.

Provenance

The following attestation bundles were made for bbox_visualizer-1.0.0-py3-none-any.whl:

Publisher: publish.yml on shoumikchow/bbox-visualizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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