gpt4 book ai didi

c# - 确定对于给定的 RGB 值组合,哪种颜色(红色、蓝色、绿色或其他)可见?

转载 作者:行者123 更新时间:2023-12-02 16:16:18 25 4
gpt4 key购买 nike

所以基本上,我需要一个可以传递红色、绿色和蓝色值的方法,并且该方法应该返回 RGB 值的组合是否会产生明显的红色、绿色或蓝色。如果组合没有产生这三种颜色中的任何一种,则应返回 false。

我尝试使用条件语句来做到这一点,尝试了一些变体,但没有什么是准确的。

例如我尝试过:

if (B > 100 && B > G / 2 && B > R / 2)
{
blueCount++;
}
else if (G > 100 && G > G / 2 && G > B / 2)
{
greenCount++;
}
else if (R > 100 && R > G / 2 && R > B / 2)
{
redCount++;
}

// R , G , B contains 0-255 values

最佳答案

如果您将“有颜色”定义为:

  • 颜色值大于100
  • 颜色值至少是其他 2 个值的两倍
    • 您当前的代码规定“至少是另外 2 个值的一半”,但这不起作用,因为如果您有“R:199 G: 101 B:102”,你可以说它是偏绿色,因为 G 高于 100,并且超过一半 199 和一半 102(当它明显偏红色)

那么你的代码看起来几乎不错(只需将 / 替换为 * )。

我只会使用 enum对于结果:

enum Ish
{
Other, // 0 so this would be false if you convert it to bool
Red, // 1
Green, // 2
Blue // 3
}
if (R>100 && R>G*2 && R>B*2)
return Ish.Red;
if (G>100 && G>R*2 && G>B*2) // you had G>G/2 here /!\
return Ish.Green;
if (B>100 && B>G*2 && B>R*2)
return Ish.Blue;
return Ish.Other;

我用了两次2,但我认为你可以使用其他值,只要是>1即可(例如,如果 B <= R,则不能说蓝色占主导地位)

这将是 R=100 时可能出现的红色值(左图的因子为 2,右图的因子为 1):

Red-ish 100 fact 2 Red-ish 100 fact 1

R=200 时(左图的系数为 2,右图的系数为 1):

Red-ish 200 fact 2 Red-ish 200 fact 1

因此您可以使用 1 到 2 之间的系数

对于 R=200,您可以看到红色,具体取决于以下因素:

Red-ish 200 multifactor

关于c# - 确定对于给定的 RGB 值组合,哪种颜色(红色、蓝色、绿色或其他)可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856547/

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