Quick Start

Extracting a Colour Palette

from renoir.color import ColorExtractor, ColorAnalyzer, ColorVisualizer
from PIL import Image

extractor = ColorExtractor()
image = Image.open("artwork.jpg")

# Extract 6 dominant colours (reproducible with default random_state=42)
palette = extractor.extract_dominant_colors(image, n_colors=6)
print(palette)  # [(120, 89, 143), ...]

Naming Colours with Art-Historical Vocabularies

from renoir.color import ColorAnalyzer

analyzer = ColorAnalyzer()
rgb = (120, 89, 143)

# Name using four different vocabularies
for vocab in ["artist", "resene", "natural", "xkcd"]:
    name = analyzer.get_color_name(rgb, vocabulary=vocab)
    print(f"{vocab}: {name}")

Advanced Metrics

# Colour Complexity Index
cci = analyzer.calculate_colour_complexity_index(palette)
print(f"CCI: {cci['overall_complexity']:.3f}")

# Historical Pigment Probability (for a painting dated 1650)
hpp = analyzer.calculate_historical_pigment_probability(rgb, year=1650)
print(hpp)

# Colour Provenance Score
cps = analyzer.calculate_colour_provenance_score(palette, year=1650)
print(f"Provenance score: {cps['provenance_score']:.3f}")

Visualisation

from renoir.color import ColorVisualizer

visualizer = ColorVisualizer()
visualizer.plot_palette(palette, title="Extracted Palette", show_names=True)