Boxes Utils¶
supervision.detection.utils.boxes.move_boxes(xyxy, offset)
¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
NDArray[float64]
|
An array of shape |
required |
|
array
|
An array of shape |
required |
Returns:
| Type | Description |
|---|---|
NDArray[float64]
|
npt.NDArray[np.float64]: Repositioned bounding boxes. |
Examples:
import numpy as np
import supervision as sv
xyxy = np.array([
[10, 10, 20, 20],
[30, 30, 40, 40]
])
offset = np.array([5, 5])
sv.move_boxes(xyxy=xyxy, offset=offset)
# array([
# [15, 15, 25, 25],
# [35, 35, 45, 45]
# ])
Source code in supervision/detection/utils/boxes.py
supervision.detection.utils.boxes.scale_boxes(xyxy, factor)
¶
Scale the dimensions of bounding boxes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
NDArray[float64]
|
An array of shape |
required |
|
float
|
A float value representing the factor by which the box dimensions are scaled. A factor greater than 1 enlarges the boxes, while a factor less than 1 shrinks them. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[float64]
|
npt.NDArray[np.float64]: Scaled bounding boxes. |
Examples:
import numpy as np
import supervision as sv
xyxy = np.array([
[10, 10, 20, 20],
[30, 30, 40, 40]
])
sv.scale_boxes(xyxy=xyxy, factor=1.5)
# array([
# [ 7.5, 7.5, 22.5, 22.5],
# [27.5, 27.5, 42.5, 42.5]
# ])
Source code in supervision/detection/utils/boxes.py
supervision.detection.utils.boxes.clip_boxes(xyxy, resolution_wh)
¶
Clips bounding boxes coordinates to fit within the frame resolution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
ndarray
|
A numpy array of shape |
required |
|
Tuple[int, int]
|
A tuple of the form
|
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: A numpy array of shape |
Examples:
import numpy as np
import supervision as sv
xyxy = np.array([
[10, 20, 300, 200],
[15, 25, 350, 450],
[-10, -20, 30, 40]
])
sv.clip_boxes(xyxy=xyxy, resolution_wh=(320, 240))
# array([
# [ 10, 20, 300, 200],
# [ 15, 25, 320, 240],
# [ 0, 0, 30, 40]
# ])
Source code in supervision/detection/utils/boxes.py
supervision.detection.utils.boxes.pad_boxes(xyxy, px, py=None)
¶
Pads bounding boxes coordinates with a constant padding.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
ndarray
|
A numpy array of shape |
required |
|
int
|
The padding value to be added to both the left and right sides of each bounding box. |
required |
|
Optional[int]
|
The padding value to be added to both the top and bottom
sides of each bounding box. If not provided, |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: A numpy array of shape |
Examples:
import numpy as np
import supervision as sv
xyxy = np.array([
[10, 20, 30, 40],
[15, 25, 35, 45]
])
sv.pad_boxes(xyxy=xyxy, px=5, py=10)
# array([
# [ 5, 10, 35, 50],
# [10, 15, 40, 55]
# ])
Source code in supervision/detection/utils/boxes.py
supervision.detection.utils.boxes.denormalize_boxes(xyxy, resolution_wh, normalization_factor=1.0)
¶
Convert normalized bounding box coordinates to absolute pixel coordinates.
Multiplies each bounding box coordinate by image size and divides by
normalization_factor, mapping values from normalized [0, normalization_factor]
to absolute pixel values for a given resolution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
`numpy.ndarray`
|
Normalized bounding boxes of shape |
required |
|
`tuple[int, int]`
|
Target image resolution as |
required |
|
`float`
|
Maximum value of input coordinate range.
Defaults to |
1.0
|
Returns:
| Type | Description |
|---|---|
`numpy.ndarray`
|
Array of shape |
Examples:
import numpy as np
import supervision as sv
xyxy = np.array([
[0.1, 0.2, 0.5, 0.6],
[0.3, 0.4, 0.7, 0.8],
[0.2, 0.1, 0.6, 0.5]
])
sv.denormalize_boxes(xyxy, (1280, 720))
# array([
# [128., 144., 640., 432.],
# [384., 288., 896., 576.],
# [256., 72., 768., 360.]
# ])
import numpy as np
import supervision as sv
xyxy = np.array([
[256., 128., 768., 640.]
])
sv.denormalize_boxes(xyxy, (1280, 720), normalization_factor=1024.0)
# array([
# [320., 90., 960., 450.]
# ])