diff --git a/supervision/annotators/core.py b/supervision/annotators/core.py index fdfb9a58..9ae81c95 100644 --- a/supervision/annotators/core.py +++ b/supervision/annotators/core.py @@ -783,7 +783,7 @@ class LabelAnnotator: def __init__( self, color: Union[Color, ColorPalette] = ColorPalette.default(), - text_color: Color = Color.black(), + text_color: Color = Color.BLACK, text_scale: float = 0.5, text_thickness: int = 1, text_padding: int = 10, diff --git a/supervision/detection/annotate.py b/supervision/detection/annotate.py index 5e9b379a..1ab1bdc2 100644 --- a/supervision/detection/annotate.py +++ b/supervision/detection/annotate.py @@ -28,7 +28,7 @@ class BoxAnnotator: self, color: Union[Color, ColorPalette] = ColorPalette.default(), thickness: int = 2, - text_color: Color = Color.black(), + text_color: Color = Color.BLACK, text_scale: float = 0.5, text_thickness: int = 1, text_padding: int = 10, diff --git a/supervision/detection/line_counter.py b/supervision/detection/line_counter.py index 0b8a1321..8fd3de4c 100644 --- a/supervision/detection/line_counter.py +++ b/supervision/detection/line_counter.py @@ -166,9 +166,9 @@ class LineZoneAnnotator: def __init__( self, thickness: float = 2, - color: Color = Color.white(), + color: Color = Color.WHITE, text_thickness: float = 2, - text_color: Color = Color.black(), + text_color: Color = Color.BLACK, text_scale: float = 0.5, text_offset: float = 1.5, text_padding: int = 10, diff --git a/supervision/detection/tools/polygon_zone.py b/supervision/detection/tools/polygon_zone.py index 8e18d8bd..c6f5b80e 100644 --- a/supervision/detection/tools/polygon_zone.py +++ b/supervision/detection/tools/polygon_zone.py @@ -90,7 +90,7 @@ class PolygonZoneAnnotator: zone: PolygonZone, color: Color, thickness: int = 2, - text_color: Color = Color.black(), + text_color: Color = Color.BLACK, text_scale: float = 0.5, text_thickness: int = 1, text_padding: int = 10, diff --git a/supervision/draw/color.py b/supervision/draw/color.py index 9d1b4ad9..fe55b25c 100644 --- a/supervision/draw/color.py +++ b/supervision/draw/color.py @@ -3,6 +3,8 @@ from __future__ import annotations from dataclasses import dataclass from typing import List, Tuple +from supervision.utils.internal import deprecated + DEFAULT_COLOR_PALETTE = [ "#a351fb", "#e6194b", @@ -116,23 +118,63 @@ class Color: """ return self.b, self.g, self.r + @property + def WHITE(cls): + return cls.from_hex("#ffffff") + + @property + def BLACK(cls): + return cls.from_hex("#000000") + + @property + def RED(cls): + return cls.from_hex("#ff0000") + + @property + def GREEN(cls): + return cls.from_hex("#00ff00") + + @property + def BLUE(cls): + return cls.from_hex("#0000ff") + @classmethod + @deprecated( + "`Color.white()` is deprecated and will be removed in " + "`supervision-0.20.0`. Use `Color.WHITE` instead." + ) def white(cls) -> Color: return Color.from_hex(color_hex="#ffffff") @classmethod + @deprecated( + "`Color.black()` is deprecated and will be removed in " + "`supervision-0.20.0`. Use `Color.BLACK` instead." + ) def black(cls) -> Color: return Color.from_hex(color_hex="#000000") @classmethod + @deprecated( + "`Color.red()` is deprecated and will be removed in " + "`supervision-0.20.0`. Use `Color.RED` instead." + ) def red(cls) -> Color: return Color.from_hex(color_hex="#ff0000") @classmethod + @deprecated( + "`Color.green()` is deprecated and will be removed in " + "`supervision-0.20.0`. Use `Color.GREEN` instead." + ) def green(cls) -> Color: return Color.from_hex(color_hex="#00ff00") @classmethod + @deprecated( + "`Color.blue()` is deprecated and will be removed in " + "`supervision-0.20.0`. Use `Color.BLUE` instead." + ) def blue(cls) -> Color: return Color.from_hex(color_hex="#0000ff") @@ -197,3 +239,10 @@ class ColorPalette: raise ValueError("idx argument should not be negative") idx = idx % len(self.colors) return self.colors[idx] + + +Color.WHITE = Color.from_hex("#ffffff") +Color.BLACK = Color.from_hex("#000000") +Color.RED = Color.from_hex("#ff0000") +Color.GREEN = Color.from_hex("#00ff00") +Color.BLUE = Color.from_hex("#0000ff") diff --git a/supervision/draw/utils.py b/supervision/draw/utils.py index 34c11a9f..10f5c932 100644 --- a/supervision/draw/utils.py +++ b/supervision/draw/utils.py @@ -105,7 +105,7 @@ def draw_text( scene: np.ndarray, text: str, text_anchor: Point, - text_color: Color = Color.black(), + text_color: Color = Color.BLACK, text_scale: float = 0.5, text_thickness: int = 1, text_padding: int = 10, diff --git a/test/draw/test_color.py b/test/draw/test_color.py index eb4c3657..b9dbc440 100644 --- a/test/draw/test_color.py +++ b/test/draw/test_color.py @@ -9,13 +9,13 @@ from supervision.draw.color import Color @pytest.mark.parametrize( "color_hex, expected_result, exception", [ - ("fff", Color.white(), DoesNotRaise()), - ("#fff", Color.white(), DoesNotRaise()), - ("ffffff", Color.white(), DoesNotRaise()), - ("#ffffff", Color.white(), DoesNotRaise()), - ("f00", Color.red(), DoesNotRaise()), - ("0f0", Color.green(), DoesNotRaise()), - ("00f", Color.blue(), DoesNotRaise()), + ("fff", Color.WHITE, DoesNotRaise()), + ("#fff", Color.WHITE, DoesNotRaise()), + ("ffffff", Color.WHITE, DoesNotRaise()), + ("#ffffff", Color.WHITE, DoesNotRaise()), + ("f00", Color.RED, DoesNotRaise()), + ("0f0", Color.GREEN, DoesNotRaise()), + ("00f", Color.BLUE, DoesNotRaise()), ("#808000", Color(r=128, g=128, b=0), DoesNotRaise()), ("", None, pytest.raises(ValueError)), ("00", None, pytest.raises(ValueError)), @@ -35,11 +35,11 @@ def test_color_from_hex( @pytest.mark.parametrize( "color, expected_result, exception", [ - (Color.white(), "#ffffff", DoesNotRaise()), - (Color.black(), "#000000", DoesNotRaise()), - (Color.red(), "#ff0000", DoesNotRaise()), - (Color.green(), "#00ff00", DoesNotRaise()), - (Color.blue(), "#0000ff", DoesNotRaise()), + (Color.WHITE, "#ffffff", DoesNotRaise()), + (Color.BLACK, "#000000", DoesNotRaise()), + (Color.RED, "#ff0000", DoesNotRaise()), + (Color.GREEN, "#00ff00", DoesNotRaise()), + (Color.BLUE, "#0000ff", DoesNotRaise()), (Color(r=128, g=128, b=0), "#808000", DoesNotRaise()), ], )