Skip to main content

Easy Bbox

Package version License Coverage Documentation

Easy Bbox is a Python package designed to simplify bounding box operations. It provides a comprehensive set of tools for manipulating bounding boxes in various coordinate formats, including Pascal VOC, COCO, YOLO and Albumentations. The package supports transformations, geometric operations, and conversions, making it a versatile tool for computer vision tasks.

Features

  • Pydantic model: Bbox objects are Pydantic models.
  • Multiple Coordinate Formats: Supports Pascal VOC, COCO, YOLO and Albumentation formats.
  • Transformations: Shift, scale, expand, and pad bounding boxes.
  • Geometric Operations: Calculate intersections, unions, and IoU (Intersection over Union).
  • Conversions: Convert between different coordinate formats.
  • Utility Functions: Includes Non-Maximum Suppression (NMS) for filtering overlapping bounding boxes.

Installation

Easy Bbox is published as a python package and can be pip installed.

pip install easy-bbox

Usage

Creating a Bounding Box

You can create a bounding box using the Bbox class. The bounding box is stored in Pascal VOC format, which is top-left, bottom-right with a top-left origin (PIL coordinate system), but can be instantiated from different formats.

from easy_bbox import Bbox

# All of the following Bbox are equal

# Create a bounding box using top-left and bottom-right coordinates
bbox = Bbox(left=10, top=20, right=30, bottom=40)

# Instantiate from a sequence in Pascal VOC format
bbox = Bbox.from_pascal_voc([10, 20, 30, 40])  
bbox = Bbox.from_tlbr([10, 20, 30, 40])   
bbox = Bbox.from_xyxy([10, 20, 30, 40])  
bbox = Bbox.from_list([10, 20, 30, 40])

# Create a bounding box using top-left and width-height coordinates (COCO format)
bbox = Bbox.from_tlwh((10, 20, 20, 20))
bbox = Bbox.from_coco((10, 20, 20, 20))

# Create a bounding box using center and width-height coordinates
bbox = Bbox.from_cwh((20, 30, 20, 20))

Transformations

Easy Bbox provides several methods for transforming bounding boxes:

bbox_transformations

Conversions

Easy Bbox provides methods for converting between different coordinate formats:

# Convert to Top-Left, Bottom-Right format
tlbr = bbox.to_tlbr() # Same as `.to_pascal_voc()`, `.to_xyxy()`

# Convert to Top-Left, Width-Height format
tlwh = bbox.to_tlwh()   # Same as `.to_coco()`

# Convert to Center, Width-Height format
cwh = bbox.to_cwh()

# Convert to normalized Top-Left, Bottom-Right format
norm_tlbr = bbox.to_norm_tlbr(img_w=100, img_h=100) # Same as `.to_albu(...)`

# Convert to normalized Top-Left, Width-Height format
norm_tlwh = bbox.to_norm_tlwh(img_w=100, img_h=100)

# Convert to normalized Center, Width-Height format
norm_cwh = bbox.to_norm_cwh(img_w=100, img_h=100) # Same as `.to_yolo(...)`

# Convert to polygon format
polygon = bbox.to_polygon()

Utility

Easy Bbox includes utility functions for common tasks:

bbox_utils

from easy_bbox import nms

# Get the minimal englobing bbox
union = bbox1.union(bbox2) # same as bbox1 | bbox2

# Get the intersection
inter = bbox1.intersection(bbox2) # same as bbox1 & bbox2

# Calculate the IoU of two bboxes
iou = bbox1.iou(bbox2)

# Check if two bboxes are overlapping
overlap = bbox1.overlaps(bbox2)

# Check if a bbox contains a point
is_inside = bbox1.contains_point((5, 10))

# Calculate the distance from a point to a bbox
dist = bbox1.distance_to_point((5, 10))

# Perform Non-Maximum Suppression
selected_bboxes = nms(bboxes, scores, iou_threshold=0.5)

Download files

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

Source Distribution

easy_bbox-1.0.5.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

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

easy_bbox-1.0.5-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file easy_bbox-1.0.5.tar.gz.

File metadata

  • Download URL: easy_bbox-1.0.5.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for easy_bbox-1.0.5.tar.gz
Algorithm Hash digest
SHA256 1cc2f6cd112e821c15c1369e75cb8bcb80f24bc753121aee535d378c243a78c4
MD5 e45e95d4d355b14df3fb8c1b2c689ef6
BLAKE2b-256 749b441212b66e9d88ebbef6eba7af581f5c18312f8ce6a94de96af90225bef2

See more details on using hashes here.

File details

Details for the file easy_bbox-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: easy_bbox-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for easy_bbox-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f556bf616051ca7dc9d649ede5f643d7ac3657d4f21545f586a874cf9220188d
MD5 936676ba5a802aab1acd7aaf5aab1e3d
BLAKE2b-256 8ee4bf24f75f83006c46fe79b2676b32316b0509b6e39afea7758dd47096b2c6

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

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