gpt4 book ai didi

c# - 给定一个颜色对象列表,找到出现频率最高/最少的颜色,并将其作为颜色对象返回

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:40 25 4
gpt4 key购买 nike

目前我有一个 Color 对象列表。每个的格式都是 RGB 格式,这意味着,例如,0, 0, 0 将是黑色。

我有兴趣遍历此列表并对其进行直方图排序。找出最常出现的颜色和出现频率最低的颜色。我有一个问题是如何对颜色值进行分类?给定一个 double 列表,您可以通过找到其范围来对值进行分箱,然后将其除以您想要的分箱数。不确定如何通过 Color 对象实现这一目标。

我目前有一段代码使用了 LINQ:

            var cs = new List<Color> { 
Color.White,
Color.Black
};

var max = cs.OrderByDescending(x => (0.2125 * x.R) + (0.7154 * x.G) + (0.0721 * x.B)).Last();

它获取我的颜色列表,找到该列表的“最大”值,并根据输出是最大还是输出 WhiteBlack分钟。

总而言之,我对用于颜色列表的 .Mode() 方法很感兴趣。

最佳答案

对于计算模式,请尝试使用 ToLookup 进行排序:

var ordered = cs.ToLookup(c => c).OrderByDescending(c => c.Count()).First().Key;

更新:

您也可以创建一个扩展方法:

public static Color Mode(this IEnumerable<Color> colors)
{
return colors.ToLookup(c => c).OrderByDescending(c => c.Count()).First().Key;
}

关于c# - 给定一个颜色对象列表,找到出现频率最高/最少的颜色,并将其作为颜色对象返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com