A lightweight and easy bounding box manipulation library with Pascal VOC, COCO, and YOLO format conversions.
Project description
Easy Bbox
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:
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:
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)
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cc2f6cd112e821c15c1369e75cb8bcb80f24bc753121aee535d378c243a78c4
|
|
| MD5 |
e45e95d4d355b14df3fb8c1b2c689ef6
|
|
| BLAKE2b-256 |
749b441212b66e9d88ebbef6eba7af581f5c18312f8ce6a94de96af90225bef2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f556bf616051ca7dc9d649ede5f643d7ac3657d4f21545f586a874cf9220188d
|
|
| MD5 |
936676ba5a802aab1acd7aaf5aab1e3d
|
|
| BLAKE2b-256 |
8ee4bf24f75f83006c46fe79b2676b32316b0509b6e39afea7758dd47096b2c6
|