如何确定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");
我有以下代码:
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");