diff --git a/docs/draw/utils.md b/docs/draw/utils.md
index ad3e1d6b..7975952c 100644
--- a/docs/draw/utils.md
+++ b/docs/draw/utils.md
@@ -41,13 +41,13 @@ comments: true
:::supervision.draw.utils.draw_image
-
calculate_dynamic_font_scale
+ calculate_optimal_font_scale
-:::supervision.draw.utils.calculate_dynamic_text_scale
+:::supervision.draw.utils.calculate_optimal_text_scale
-
calculate_dynamic_line_thickness
+ calculate_optimal_line_thickness
-:::supervision.draw.utils.calculate_dynamic_line_thickness
+:::supervision.draw.utils.calculate_optimal_line_thickness
diff --git a/examples/count_people_in_zone/requirements.txt b/examples/count_people_in_zone/requirements.txt
index a8f583e8..d9e27264 100644
--- a/examples/count_people_in_zone/requirements.txt
+++ b/examples/count_people_in_zone/requirements.txt
@@ -1,5 +1,5 @@
gdown
inference
-supervision
+supervision==0.19.0
tqdm
ultralytics
diff --git a/examples/heatmap_and_track/requirements.txt b/examples/heatmap_and_track/requirements.txt
index ffc73e1f..27e5e57a 100644
--- a/examples/heatmap_and_track/requirements.txt
+++ b/examples/heatmap_and_track/requirements.txt
@@ -1,2 +1,2 @@
-supervision[assets]
+supervision[assets]==0.19.0
ultralytics
diff --git a/examples/speed_estimation/requirements.txt b/examples/speed_estimation/requirements.txt
index 59ca45cb..36de970d 100644
--- a/examples/speed_estimation/requirements.txt
+++ b/examples/speed_estimation/requirements.txt
@@ -1,4 +1,4 @@
-supervision==0.18.0rc1
+supervision==0.19.0
tqdm==4.66.1
requests
ultralytics==8.0.237
diff --git a/examples/tracking/requirements.txt b/examples/tracking/requirements.txt
index 80c28300..8d5a9233 100644
--- a/examples/tracking/requirements.txt
+++ b/examples/tracking/requirements.txt
@@ -1,4 +1,4 @@
inference
-supervision
+supervision==0.19.0
tqdm
ultralytics
diff --git a/examples/traffic_analysis/requirements.txt b/examples/traffic_analysis/requirements.txt
index c56009a1..6e72dd55 100644
--- a/examples/traffic_analysis/requirements.txt
+++ b/examples/traffic_analysis/requirements.txt
@@ -1,5 +1,5 @@
gdown
inference
-supervision>=0.19.0rc5
+supervision>=0.19.0
tqdm
ultralytics
diff --git a/supervision/__init__.py b/supervision/__init__.py
index 4a102af5..35f525b0 100644
--- a/supervision/__init__.py
+++ b/supervision/__init__.py
@@ -58,8 +58,8 @@ from supervision.detection.utils import (
)
from supervision.draw.color import Color, ColorPalette
from supervision.draw.utils import (
- calculate_dynamic_line_thickness,
- calculate_dynamic_text_scale,
+ calculate_optimal_line_thickness,
+ calculate_optimal_text_scale,
draw_filled_rectangle,
draw_image,
draw_line,
diff --git a/supervision/annotators/core.py b/supervision/annotators/core.py
index a96d91e1..2be2562e 100644
--- a/supervision/annotators/core.py
+++ b/supervision/annotators/core.py
@@ -1851,9 +1851,9 @@ class CropAnnotator(BaseAnnotator):
self,
position: Position = Position.TOP_CENTER,
scale_factor: int = 2,
- color: Union[Color, ColorPalette] = ColorPalette.DEFAULT,
- thickness: int = 2,
- color_lookup: ColorLookup = ColorLookup.CLASS,
+ border_color: Union[Color, ColorPalette] = ColorPalette.DEFAULT,
+ border_thickness: int = 2,
+ border_color_lookup: ColorLookup = ColorLookup.CLASS,
):
"""
Args:
@@ -1862,12 +1862,17 @@ class CropAnnotator(BaseAnnotator):
scale_factor (int): The factor by which to scale the cropped image part. A
factor of 2, for example, would double the size of the cropped area,
allowing for a closer view of the detection.
+ border_color (Union[Color, ColorPalette]): The color or color palette to
+ use for annotating border around the cropped area.
+ border_thickness (int): The thickness of the border around the cropped area.
+ border_color_lookup (ColorLookup): Strategy for mapping colors to
+ annotations. Options are `INDEX`, `CLASS`, `TRACK`.
"""
self.position: Position = position
self.scale_factor: int = scale_factor
- self.color: Union[Color, ColorPalette] = color
- self.thickness: int = thickness
- self.color_lookup: ColorLookup = color_lookup
+ self.border_color: Union[Color, ColorPalette] = border_color
+ self.border_thickness: int = border_thickness
+ self.border_color_lookup: ColorLookup = border_color_lookup
@scene_to_annotator_img_type
def annotate(
@@ -1923,10 +1928,10 @@ class CropAnnotator(BaseAnnotator):
)
scene = place_image(scene=scene, image=resized_crop, anchor=(x1, y1))
color = resolve_color(
- color=self.color,
+ color=self.border_color,
detections=detections,
detection_idx=idx,
- color_lookup=self.color_lookup
+ color_lookup=self.border_color_lookup
if custom_color_lookup is None
else custom_color_lookup,
)
@@ -1935,7 +1940,7 @@ class CropAnnotator(BaseAnnotator):
pt1=(x1, y1),
pt2=(x2, y2),
color=color.as_bgr(),
- thickness=self.thickness,
+ thickness=self.border_thickness,
)
return scene
@@ -1948,14 +1953,14 @@ class CropAnnotator(BaseAnnotator):
width, height = crop_wh
if position == Position.TOP_LEFT:
- return ((anchor_x - width, anchor_y - height), (anchor_x, anchor_y))
+ return (anchor_x - width, anchor_y - height), (anchor_x, anchor_y)
elif position == Position.TOP_CENTER:
return (
(anchor_x - width // 2, anchor_y - height),
(anchor_x + width // 2, anchor_y),
)
elif position == Position.TOP_RIGHT:
- return ((anchor_x, anchor_y - height), (anchor_x + width, anchor_y))
+ return (anchor_x, anchor_y - height), (anchor_x + width, anchor_y)
elif position == Position.CENTER_LEFT:
return (
(anchor_x - width, anchor_y - height // 2),
@@ -1972,11 +1977,11 @@ class CropAnnotator(BaseAnnotator):
(anchor_x + width, anchor_y + height // 2),
)
elif position == Position.BOTTOM_LEFT:
- return ((anchor_x - width, anchor_y), (anchor_x, anchor_y + height))
+ return (anchor_x - width, anchor_y), (anchor_x, anchor_y + height)
elif position == Position.BOTTOM_CENTER:
return (
(anchor_x - width // 2, anchor_y),
(anchor_x + width // 2, anchor_y + height),
)
elif position == Position.BOTTOM_RIGHT:
- return ((anchor_x, anchor_y), (anchor_x + width, anchor_y + height))
+ return (anchor_x, anchor_y), (anchor_x + width, anchor_y + height)
diff --git a/supervision/draw/utils.py b/supervision/draw/utils.py
index 7f82b008..638e6b75 100644
--- a/supervision/draw/utils.py
+++ b/supervision/draw/utils.py
@@ -238,13 +238,13 @@ def draw_image(
return scene
-def calculate_dynamic_text_scale(resolution_wh: Tuple[int, int]) -> float:
+def calculate_optimal_text_scale(resolution_wh: Tuple[int, int]) -> float:
"""
- Calculate a dynamic font scale based on the resolution of an image.
+ Calculate font scale based on the resolution of an image.
Parameters:
resolution_wh (Tuple[int, int]): A tuple representing the width and height
- of the image.
+ of the image.
Returns:
float: The calculated font scale factor.
@@ -252,25 +252,17 @@ def calculate_dynamic_text_scale(resolution_wh: Tuple[int, int]) -> float:
return min(resolution_wh) * 1e-3
-def calculate_dynamic_line_thickness(resolution_wh: Tuple[int, int]) -> int:
+def calculate_optimal_line_thickness(resolution_wh: Tuple[int, int]) -> int:
"""
- Calculate a dynamic line thickness based on the resolution of an image.
+ Calculate line thickness based on the resolution of an image.
Parameters:
resolution_wh (Tuple[int, int]): A tuple representing the width and height
- of the image.
+ of the image.
Returns:
int: The calculated line thickness in pixels.
"""
- min_dimension = min(resolution_wh)
- if min_dimension < 480:
+ if min(resolution_wh) < 1080:
return 2
- if min_dimension < 720:
- return 2
- if min_dimension < 1080:
- return 2
- if min_dimension < 2160:
- return 4
- else:
- return 4
+ return 4