RGB-Werte in Farbnamen umwandeln

7

Wie kann ich eine Farbe im RGB-Format in einen Farbnamen umwandeln?

Beispiele:

  • (0, 0, 255) - & gt; "blau"
  • (255, 0, 0) - & gt; "rot"
  • (128, 128, 128) - & gt; "grau"
user236501 08.11.2010, 16:53
quelle

7 Antworten

6
  1. Füllen Sie eine Liste mit "bekannten" Farben aus.
  2. Für jede bekannte Farbberechnung:

    %Vor%
  3. Gibt den Namen von colorI zurück, für den rgbDistance am kleinsten war.

Ivan 08.11.2010, 17:08
quelle
17

Hier ist ein funktionierender Beispielcode , der das tut. Es konvertiert eine rgb / hex-Wert / awt-Farbe in den nächsten Farbnamen.

%Vor%     
cindyxiaoxiaoli 18.12.2013 22:45
quelle
3

Hmm, das ist eine Art Spaßproblem. Ich kann mir ein paar Lösungen vorstellen:

  1. Je nach den Beziehungen zwischen den RGB-Werten können Sie ein wenig rätseln (wenn Sie zum Beispiel eine Farbe dominieren, dann raten Sie diese Farbe, aber wenn Sie eine andere Farbe haben, werden Sie immer wahrscheinlicher Um die Kombination dieser zwei emittierten Farben zu erraten, wenn alle drei nahe beieinander liegen, dann rate weiß, grau oder schwarz, je nachdem wie hoch der Durchschnitt der drei Werte ist, wenn zwei hoch und der andere niedrig ist, rate die Kombination von die zwei usw. usw.).

  2. Sie könnten sich für einen Lernansatz entscheiden, bei dem Sie einige erste Vermutungen anstellen (wie oben) und diese dann auf Grundlage der Rückmeldungen von Benutzern verbessern.

Leider ist dieses Problem relativ subjektiv (obwohl die Frage nicht ist!), da die Farbwahrnehmung der Menschen zwischen Kultur und Geschlecht stark variiert (siehe ).

Wenn Sie eine bestimmte Teilmenge von RGB-Werten haben möchten (wie diejenigen, die in Java oder C # Konstanten erhalten, können Sie diese durchlaufen und vergleichen und schließlich einen Standardwert zurückgeben, wenn sie nicht gleich sind).

[EDIT]

Ahh! Farbblinde Benutzer wie? Haben Sie darüber nachgedacht, eine Einstellung zu erstellen, mit der der Benutzer angeben kann, welche Farben für die Unterscheidung schwierig sind? Wenn du das tust, könntest du sie wissen lassen, dass etwas "20% roter als grün" ist (wenn sie zum Beispiel eine rot-grüne Farbenblindheit hatten, was am häufigsten vorkommt). Das wäre ziemlich einfach. Sie wählen ein Pixel und folgen diesem Pseudocode:

%Vor%

Das könnte eine einfachere und nützlichere Lösung sein.

    
Crisfole 08.11.2010 17:05
quelle
2

Nicht alle RGB-Werte haben Aliase. Möglicherweise müssen Sie ein Array erstellen, das Arrays aus Rot-, Grün-, Blau- und Alias-Werten enthält. Dann würden Sie über dieses Array iterieren, um die RGB-Werte zu vergleichen.

Ссылка

Bearbeiten:

Beispiel:

%Vor%     
Evan Mulawski 08.11.2010 16:57
quelle
1

Alle konvertierten Pixel von RGB nach HSV. Es ist viel einfacher, Farbbereiche in HSV als in RGB zu definieren.

%Vor%     
iddqd 08.11.2010 17:27
quelle
1

Sie könnten einfach eine Nachschlagetabelle erstellen, z. Verwenden Sie die Konstanten aus der Color-Klasse selbst:

%Vor%

Wenn Sie alle HTML-Farben oder alle von Wikipedia verlinkten von @evan wollen, haben Sie noch ein paar Hausaufgaben zu erledigen.

Bearbeiten Sie die resultierende Karte:

%Vor%     
sfussenegger 08.11.2010 17:04
quelle
0

In meinem Fall war ich auf der Suche nach einer schnellen Möglichkeit, den Namen von Primärfarben zu erhalten, die auf allen LEDs angezeigt werden können, so dass die folgende Funktion für mich funktioniert. Ich hoffe, es ist hilfreich für jemanden.

%Vor%     
rosterloh 12.08.2014 11:55
quelle

Tags und Links