如果我得到浅灰色(例如 R=G=B=200)和深灰色(例如 R=46,G=41,B=35),我想将它们分类为简单的灰色组(想象一张 table )。
那么,我怎样才能将颜色组织成颜色组呢?
最佳答案
对于颜色的视觉分类,将颜色转换为 HSL or HSV 通常更容易第一的。要检测灰色,请检查饱和度是否低于某个阈值。要检测任何其他颜色,请检查色调。
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";
}
您当然可以使用其他一些部门。
我制作了一个简单的 JavaScript 应用程序来测试它:Color classification
关于c# - 如何将某些颜色分类到颜色范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457601/