Gibt es eine Möglichkeit, Farben, die durch ihre Hex-Codes gegeben sind, als Schattierungen einer bestimmten Farbe zu identifizieren?
Ich denke, ich habe einen Weg gefunden, nicht sicher, wie genau - aber wie kann ich sagen, ob die Farbübereinstimmung, die ich fand, nicht gut genug ist?Die beste Farbübereinstimmung finden - und ablehnen, wenn keine Farbschattierungen verfügbar sind
Ich muss in der Lage sein, Farbübereinstimmungen für bestimmte Farben zu identifizieren - ein festes Set (rot, gelb, orange, blau, grün, braun, lila, grau, schwarz, weiß).
Im Moment mache ich eine Farbe Spiel basierend auf Distanz:
eine Farbe über c
von der festen Farbliste Given (die ich hex Farben Set mit hoffentlich in der Mitte für diese Farbe des Bereichs sein , die ich nicht ganz sicher bin, wie zu bekommen - im Moment verwende ich eine Farbe, die "gut" aussieht, und eine Liste der verfügbaren Farben list
, ich versuche, den Index aus der Liste mit der nächsten Farbe zu finden.
int matchColor(QColor c, QList<QColor> list)
{
int bestIndex = 0;
int distance;
int bestMatch = 0;
int sz = list.size() - 1;
for (int i = 0; i <= sz; ++i)
{
int Rdiff = 255 - qAbs(c.red() - list.at(i).red());
int Gdiff = 255 - qAbs(c.green() - list.at(i).green());
int Bdiff = 255 - qAbs(c.blue() - list.at(i).blue());
distance = Rdiff + Gdiff + Bdiff;
if (distance > bestMatch)
{
bestMatch = distance;
bestIndex = i;
}
}
// if(bestMatch < 600 ? or something ?) return -1;
return bestIndex;
}
Das Problem ist, weil dieses Spiel soll strikt durchgesetzt werden (für einige Standards), muss ich zurückkehren Schatten der spezifischen Farbe c
und fehlschlagen, wenn ich kann nicht.
Ich bin nicht 100% sicher, dass die Farbübereinstimmung gut ist - obwohl es ziemlich ok scheint.
Aber anders als die beste Farbabstimmung zu finden - was ist ein angemessener Wert der Entfernung, für die ich eine Übereinstimmung ablehnen sollte? (erwartet distance
zwischen 0 und 765, wobei 765 perfekt passt).
Gibt es bestimmte Bereiche, die ich überprüfen kann?
Würde der Bereich für jede Farbe unterschiedlich sein?
Hinweis - Ich habe einige ähnliche Fragen gefunden, einige haben Verweise auf komplexere Algorithmen, die ich nicht verstehen konnte - aber ich habe nichts gesehen, was mir sagen könnte, wie man eine Übereinstimmung zurückweist ... Ich würde eine bessere Lösung begrüßen.
Ja, wird der Bereich für jede Farbe unterschiedlich sein, es sei denn, Sie zuerst zu einem einheitlichen Eindruck vermittelt Farbraum wie [CIE Lab] (https://en.wikipedia.org/wiki/Lab_color_space) konvertieren . –