Gibt es ein Open-Source-Programm, das die Farbe aus einem Bild extrahiert?

Ich suche etwas wie das, was Windows 8+ für "automatische" Färbung verwendet, oder die neue YouTube-Android-App, die für die Navigationsleisten der Benutzerseite verwendet wird, wo die App automatisch das Bild betrachtet und eine Palette von Haupt- und Komplementärfarben zurückgibt.

Gibt es ein solches Programm oder eine solche API, die ebenfalls Open Source ist?

Antworten (2)

Mir ist nicht bekannt, was Windows 8 oder die neue YouTube-App tut, da ich beides nicht verwende, aber wenn Sie eine nach Häufigkeit sortierte N-Farben-Palette erhalten möchten, dh Sie suchen, wie Sie von image.png:

lenna

ein palette.png:

Palette

oder palette.txt:

#D2615E
#B24953
#DE8D75
#5D133B
#65214C
#D36F6D
#EECAAA
#DCA295
#C78E79
#8F283D
#CEB3B6
#99364B
#A36A90
#A95D6B
#7B4886
#75416E

dann ist es eine ziemlich grundlegende Aufgabe für jedes Bildverarbeitungstool.

So könnte es mit ImageMagick (plus ein bisschen GNU Bash, Coreutils und AWK) gemacht werden:

$ convert "image.png" -colors 16 -depth 8 -format '%c' histogram:info:- \
    | sort --reverse --numeric-sort \
    | gawk 'match ($0, /^ *[0-9]+: \([^)]+\) (#[0-9A-F]+) .+$/, a) { print a[1] }' \
    | tee "palette.txt" \
    | while read colour; do convert -size 20x20 "xc:$colour" +depth miff:-; done \
    | montage - -geometry +0+0 "palette.png"

Das ist natürlich ein Beispiel; Sie müssen Ihr Programm nicht ausführen convertund monageper system(3)Aufruf aufrufen – Schnittstellen für ImageMagick sind für alle gängigen Sprachen verfügbar: C, C++, Perl, Python, Ruby, Java usw. Und es ist eine kostenlose/libre -Software (abgedeckt durch die Apache v2-Lizenz , um genau zu sein).

Es gibt viele - wahrscheinlich eine der einfachsten ist die ImageMagik- Konvertierung, zB:

  convert rose: \
          -define histogram:unique-colors=false \
          histogram:histogram.gif

Was in diesem Fall für das Rosenbild ergibt:Geben Sie hier die Bildbeschreibung ein

Sie können ähnliche Dinge in einer Reihe von FOSS-Bildverarbeitungsprogrammen wie GIMP, G'IMIC, Darktable ...

Sie können diese Art von Dingen auch mit Python-Tools usw.