Si je reçois une couleur grammaire (par exemple, r = g = b = 200) et une sombre (par exemple r = 46, g = 41, B = 35), j'aimerais classer les deux à ces deux Le groupe de couleurs gris simple (imaginez une table). p>
Alors, comment puis-je organiser les couleurs des groupes de couleurs? P>
3 Réponses :
Il y a quelques façons de classer les couleurs. Une solution serait de considérer RVB d'être une coordonnée 3D et toutes les couleurs possibles pourraient ensuite être représentées dans une boîte ou un cube avec noir dans l'origo et blanc dans le coin opposé situé à (255 255 255 55). Toutes les couleurs grisons seraient alors situées à proximité de la diagonale. Et des couleurs rouges, vertes et bleuâtres proches de l'axe. De cette façon, le problème de la classification a été transformé pour trouver la distance la plus proche entre un point (la couleur) et une ligne (la diagonale grise) dans l'espace 3D. Si la distance est inférieure à une molette donnée, la couleur serait classée comme gris. p>
Oui. C'est fondamentalement la même chose que l'utilisation de la représentation HSL / HSV, mais au lieu d'un cube, il a été transformé en cylindre.
Que diriez-vous ci-dessous la mise en oeuvre de la table de couleur: et écrire ci-dessous le code pour générer / obtenir la couleur de la couleur: p> //Generating Color Group Table
List<ColorTable> MyColorTable = new List<ColorTable>();
MyColorTable.Add(new ColorTable { GroupName = "Gray", ColorName = Color.Gray });
MyColorTable.Add(new ColorTable { GroupName = "Gray", ColorName = Color.LightGray });
MyColorTable.Add(new ColorTable { GroupName = "Green", ColorName = Color.Green });
MyColorTable.Add(new ColorTable { GroupName = "Green", ColorName = Color.LightGreen });
//Getting required Color Group, say "Gray"
List<ColorTable> GreenColor = MyColorTable.Where(c => c.GroupName == "Gray").ToList();
Je viens de passer un nom de couleur passée, vous pouvez envoyer un nom de couleur avec des gammes, merci
Merci, mais ce n'est pas la réponse à ma question. Imaginez que vous ayez une couleur, avec les valeurs RVB suivantes: 55,83,70 (vert foncé, presque gris)
donc, la question est que le groupe contiendra cette couleur? Le vert ou le gris? (Donc, je n'ai aucune couleur prédéfinie, classée aux groupes, seulement quelques noms de Qroup (avec des valeurs RVB), par exemple les verts et les gris.)
Mais le RVB n'est pas nécessaire, peut être cmyk ou hexa ou quoi que ce soit, s'il est plus facile.
Pour la classification visuelle des couleurs, il est souvent plus facile de convertir la couleur en HSL ou HSV d'abord. Pour détecter les gris, vous vérifiez si la saturation est inférieure à un seuil. Pour détecter toute autre couleur, vous vérifiez la teinte.
public string Classify(Color c) { float hue = c.GetHue(); float sat = c.GetSaturation(); float lgt = c.GetLightness(); if (lgt < 0.2) return "Blacks"; if (lgt > 0.8) return "Whites"; if (sat < 0.25) return "Grays"; if (hue < 30) return "Reds"; if (hue < 90) return "Yellows"; if (hue < 150) return "Greens"; if (hue < 210) return "Cyans"; if (hue < 270) return "Blues"; if (hue < 330) return "Magentas"; return "Reds"; }
Hmm, thaks, je l'essaie immédiatement.
Qu'entendez-vous par organisation des couleurs?
Quels groupes de couleurs avez-vous?
Je n'ai pas déjà décidé cela. Tout d'abord, je veux créer l'algorithme. (Mais vous pouvez calculer avec 50-60 groupe.)