gpt4 book ai didi

c - 如何在固定颜色显示器中找到最红的颜色?

转载 作者:行者123 更新时间:2023-12-01 13:31:01 25 4
gpt4 key购买 nike

我正在为一台名为 Amiga 的旧计算机编写 UI(有些人可能还记得这些)。它们的显示模式具有固定数量的颜色 - 2、4、8、16 等,您可以使用 0 到 255 之间的 RGB 设置其中任何一种。

所以在 4 色显示器上你可以:

  • 颜色 0 R=0, G=0, B=0(黑色)
  • 颜色 1 R=255,G=255,B=255(白色)
  • 颜色 2 R=128,G=128,B=128(中灰色)
  • 颜色 3 R=255,G=0,B=0(红色)

“正常”显示的最大颜色数是 255(有一些特殊的显示模式可以提高这个值,但我不需要担心这些)。

我正在尝试编写一些 C 代码来读取显示器的颜色列表并找到最红、最绿和最蓝的颜色,但我无法理解所涉及的比较。

如果我有 3 个变量 - 红色、绿色和蓝色 - 所有保存当前颜色 rgb 值的整数和另外 3 个 - stored_red、stored_stored_green 和 stored_blue。

我如何编写一个函数来记住相对于其他颜色而言最红的颜色编号?

我试过:

If ((red>stored_red) && ((blue <stored_blue) || (green<stored_green)))

但这行不通。我想我需要研究比率,但就是想不通数学。

最佳答案

有不同的方法可以检查最大“红色”/“绿色”等,这里第一种简单的方法是我最初使用的方法:

/* for all palette (color table) entries */
if(red > stored_red) {
max_red_index = current_index;
stored_red = red;
}
if(blue > stored_blue) {
max_blue_index = current_index;
stored_blue = blue;
}

当然绿色也一样。
这只会给出具有最大成分的颜色,但在@Chris Turner 的评论之后我认为这可能不是你想要的。

另一种方法是检查红色与其他颜色的比例(从现在开始我将只使用红色):

redness = red*2/(blue + green + 1)

这为“红色”给出了 1 到 510 之间的数字,它不考虑亮度。例如 R-G-B 50-10-10 比 255-100-100 (2) 更红 (4)。

很多其他公式也是可能的,比如

redness = red*red/(blue + green + 1)

还会考虑亮度,认为红色比 50-10-10 多 255-100-100。

要使用这些公式,只需将上面的 red 变量设置为红色公式的结果即可。

关于c - 如何在固定颜色显示器中找到最红的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938846/

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