Programmatisch eine vom Menschen lesbare Farbe (z. B. Rot, Grün usw.) eines Bildes bestimmen

8

Ich versuche, ein Skript zu entwickeln, das programmgesteuert durch ein Bild läuft und mir seine Primärfarbe (n) sagt.

Momentan erhält das Skript den RGB-Wert jedes Pixels. Vergleicht sie mit vordefinierten Regeln und versucht, die Anzahl der Pixel jeder Farbe zu zählen.

Mein Problem ist, dass das Skript ein kleiner Treffer ist. Kennt jemand einen besseren Weg, dies zu tun (vielleicht mit einem anderen Farbcodierungssystem, das leichter in Englisch zu übersetzen ist) oder einen bestehenden Satz von Regeln, die Farben über ihr RGB definieren?

%Vor%     
Dan 21.09.2011, 14:41
quelle

2 Antworten

2

Lösung war, das RGB in HSL umzuwandeln, wie von Herbert vorgeschlagen. Die Funktion zum Konvertieren in den Menschen muss noch ein wenig optimiert werden, aber hier ist es:

%Vor%     
Dan 26.09.2011, 13:13
quelle
1

Okay, du hast eine Grafikbibliothek, es muss ein durchschnittliches Ding drin sein, du durchschnittst dein Bild, nimmst einen Pixel und tadaam, du bist fertig?

Und die einfachste Lösung, die wir hier finden, ist: resize to 1x1px, colorate:

Bildfarbe abrufen

Danach ist es ziemlich einfach, finde irgendwo eine detaillierte Liste von rgb für Menschen lesbar (zum Beispiel HTML-Farben), kodiere das als ein Array und benutze es in deinem Skript - & gt; round () Ihre r, g, b, vals auf die Genauigkeit Ihrer Daten und rufen Sie die Farbe.

Sie sollten bestimmen, welche Farb Granularität Sie wollen und von dort gehen - & gt; finde deine Menge von benannten Farben (ich denke, dass alle 8bit Farben irgendwo einen Namen haben) und reduziere dann deine RGB Informationen auf diese - entweder durch Reduzieren der Farbinformation des Bildes vor dem Lesen (schneller) oder durch Reduzieren der Farbinformation zur Lesezeit (mehr flexibel in Bezug auf die Farbliste.

Grundlegendes Beispiel einiger rgb-lesbaren Ressourcen:

Ссылка

Andere:

Ссылка

Ссылка

    
Morg. 22.09.2011 09:21
quelle

Tags und Links