如何确定16个不同像素中最常用的颜色?

How to determine the most-used color among 16 different pixels?

我有以下代码:

for (int iy = y; iy < y + 4; iy++)
    for (int ix = x; ix < x + 4; ix++)
     {
         Color c = default_image.GetPixel(ix,iy);
     }
 }

现在我需要确定这16种颜色中哪种颜色使用最多。我该怎么做?

先把Colors放入一个集合中,比如array.Then可以用LINQGroupBy对它们进行分组,按降序[=16]排序=] 根据计数排序然后得到其中颜色最多的第一组:

Color[] colors = new [] { color1, color2, color3, ... };
var mostUsedColor = colors.GroupBy(c => c)
                          .OrderByDescending(g => g.Count())
                          .First().Key;

这是一个完整的解决方案:

首先,它在字典集合中收集颜色及其计数。

为此,它在位图的维度上使用了双循环

然后是命令它们进入第二个集合。

最后它显示了拳头,即 MessageBox 中的最大计数:

  Dictionary<Color, int> colors = new Dictionary<Color, int>();

  for (int iy = y; iy < y + 4; iy++)
    for (int ix = x; ix < x + 4; ix++)
     {
        Color c = default_image.GetPixel(ix,iy);
        if (colors.ContainsKey(c)) colors[c]++; else colors.Add(c, 1);
     }
    var vvv = colors.OrderByDescending(el => el.Value);
    MessageBox.Show(String.Format("Color {0} found {1} times.", 
                    vvv.First().Key, vvv.First().Value),  "Result");