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