将颜色阴影分组为其基色c#

时间:2015-11-20 16:16:07

标签: c# colors

我想将图像像素颜色分类为一种基本颜色 例如 {暗灰色,浅灰色,银色}那里的基色是====> "格雷" {中蓝色,午夜蓝,深蓝色} ===>"蓝色" 等等

1 个答案:

答案 0 :(得分:0)

假设您要使用C# s Color结构,您可以使用Dictionary类执行以下操作:

Dictionary<Color, List<Color>> colorDict = new Dictionary<Color, List<Color>>();
colorDict.Add(Colors.Gray, new List<Color>() { Colors.DimGrey, Colors.Silver });
colorDict.Add(Colors.Blue, new List<Color>() { Colors.LightBlue, Colors.MidnightBlue });

然后你会有一种方法来找到传入的每种颜色的Key颜色,如下所示:

private Color FindKeyColour(Dictionary<Color, List<Color>> dict, Color c)
{
    if (!dict.ContainsKey(c))
    {
        //The colour is not a key
        return dict.FirstOrDefault(d => d.Value.Contains(c)).Key;
    }
    else
    {
        //The colour passed in is a key
        return c;
    }
}

注意:如果颜色c不是键或包含在值中,则需要修改此函数。