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:
7 files changed
+56
-28
No files matched your search
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
@@ -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")
|
||||
@@ -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
@@ -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()),
|
||||
],
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user