feat(color.py): ✨ add color constants

This commit adds the WHITE, BLACK, RED, GREEN, and BLUE color constants
to the Color class in color.py. These constants represent
the corresponding colors in the RGB color space.

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
This commit is contained in:
Onuralp SEZER committed 2024-01-19 00:42:59 +03:00
1 parent d503e3aa50
commit bb4d741aff
7 files changed
+56 -28

No files matched your search

+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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,
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -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,
+38 -10
View File
@@ -47,6 +47,12 @@ class Color:
g: int
b: int
_WHITE = None
_BLACK = None
_RED = None
_GREEN = None
_BLUE = None
@classmethod
def from_hex(cls, color_hex: str) -> Color:
"""
@@ -116,25 +122,40 @@ class Color:
"""
return self.b, self.g, self.r
@property
@classmethod
def white(cls) -> Color:
return Color.from_hex(color_hex="#ffffff")
def WHITE(cls):
if cls._WHITE is None:
cls._WHITE = cls.from_hex("#ffffff")
return cls._WHITE
@property
@classmethod
def black(cls) -> Color:
return Color.from_hex(color_hex="#000000")
def BLACK(cls):
if cls._BLACK is None:
cls._BLACK = cls.from_hex("#000000")
return cls._BLACK
@property
@classmethod
def red(cls) -> Color:
return Color.from_hex(color_hex="#ff0000")
def RED(cls):
if cls._RED is None:
cls._RED = cls.from_hex("#ff0000")
return cls._RED
@property
@classmethod
def green(cls) -> Color:
return Color.from_hex(color_hex="#00ff00")
def GREEN(cls):
if cls._GREEN is None:
cls._GREEN = cls.from_hex("#00ff00")
return cls._GREEN
@property
@classmethod
def blue(cls) -> Color:
return Color.from_hex(color_hex="#0000ff")
def BLUE(cls):
if cls._BLUE is None:
cls._BLUE = cls.from_hex("#0000ff")
return cls._BLUE
@dataclass
@@ -197,3 +218,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")
+1 -1
View File
@@ -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,
+12 -12
View File
@@ -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()),
],
)