Spaces:
Running
Running
import colorsys | |
from typing import NamedTuple | |
import numpy as np | |
class HSVUpdate(NamedTuple): | |
h: int = 0 | |
s: int = 0 | |
v: int = 0 | |
def apply(self, color: np.ndarray): | |
hsv = colorsys.rgb_to_hsv(*color / 255) | |
tmp = np.add(hsv, self).clip(0, 1) | |
rgb = colorsys.hsv_to_rgb(*tmp) | |
return np.array(rgb) * 255 | |
def get_hsv_value(cluster: np.ndarray): | |
return colorsys.rgb_to_hsv(*cluster / 255)[2] | |
def add_hsv_saturation(cluster: np.ndarray, delta: float): | |
h, s, v = colorsys.rgb_to_hsv(*cluster / 255) | |
s = max(0, min(1, s + delta)) | |
return np.array(colorsys.hsv_to_rgb(h, s, v)) * 255 | |
def array_to_hex(values: np.ndarray): | |
values = np.round(values).astype(int) | |
return "#" + ("{:02X}" * len(values)).format(*values) | |