如果我得到浅灰色的颜色(例如R = G = B = 200)和暗的一个(例如R = 46,G = 41,B = 35),我想两者分类到简单的灰色颜色组(想象一张桌子)。如何将某些颜色分类为颜色范围?
所以,我怎么能组织颜色,颜色组?
如果我得到浅灰色的颜色(例如R = G = B = 200)和暗的一个(例如R = 46,G = 41,B = 35),我想两者分类到简单的灰色颜色组(想象一张桌子)。如何将某些颜色分类为颜色范围?
所以,我怎么能组织颜色,颜色组?
对于颜色视觉的分类,它往往是比较容易的颜色转换先到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
嗯,泰克,我立即尝试。 – laszlokiss88
有分类颜色的几种方法。一种方法是将rgb视为一个三维坐标,然后所有可能的颜色都可以在一个盒子或立方体中呈现,其中原色中的黑色和位于(255,255,255)处的对角的白色。所有的灰色将接近对角线。 靠近轴的是红色,绿色和蓝色。 这样分类问题已经转化为找到三维空间中一个点(颜色)和一条线(灰色对角线)之间的最近距离。如果距离低于给定的阈值,颜色将被分类为灰色。
这可以工作,但有点复杂... – laszlokiss88
是的。它与使用HSL/HSV表示法基本上是相同的,但是它已经被转换为圆柱体而不是立方体。 – danca
如何下面颜色表的实现:
而下面的代码编写生成/获得色彩组:
//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();
我刚刚已通过色彩的名字,你可以用范围发送彩色的名字,感谢 –
谢谢,但这不是我的问题的答案。 假设你有一个颜色,用下面的RGB值: 55,83,70(很暗绿色,几乎灰色)
所以,问题是,这组将包含这种颜色?绿色还是灰色? (所以我没有任何预定义的颜色,分类到组,只有几个群名称(与rgb值),例如绿色和灰色。)
但是RGB不是必需的,它可以如果CMYK或者hexa或者任何东西更容易。 –
laszlokiss88
你是什么颜色的组织呢? –
你有什么样的颜色组合? – Magnus
我还没有决定。首先,我想创建算法。 (但你可以用50-60组计算) – laszlokiss88