如何确定颜色是否接近其他颜色?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (54)

我正在创建一种颜色工具,这个工具应该告诉我颜色是否接近其他颜色,例如:

Color[] colors = new colors[] { Color.FromArgb(0,0,255), Color.FromArgb(0,109,251)};
//colors[0] IS BLUE
//colors[1] IS BRIGHTER BLUE (#006DFB)
bool TheyClose = ColorsAreClose(colors[0],colors[1]); //TRUE BLUE IS CLOSE
//TheyColse Should Be = TURE

ColorsAreClose()函数应该如何用?

提问于
用户回答回答于

像这样的怎么样?

bool ColorsAreClose(Color a, Color z, int threshold = 50)
{
    int r = (int)a.R - z.R,
        g = (int)a.G - z.G,
        b = (int)a.B - z.B;
    return (r*r + g*g + b*b) <= threshold*threshold;
}

(我只是猜到了默认阈值,但你应该把它设置成你想要的。)

基本上,这只是计算三种颜色通道在两种颜色之间是否足够接近。

用户回答回答于

一种简单的测量RGB距离的方法:

public bool ColorsAreClose(Color[] colors)
{

    var rDist = Math.Abs(colors[0].R - colors[1].R);
    var gDist = Math.Abs(colors[0].G - colors[1].G);
    var bDist = Math.Abs(colors[0].B - colors[1].B);

    if(rDist + gDist + bDist > Threshold)
        return false;

    return true;

}

阈值是一个常数,它是你想要考虑的最大偏差。

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问8 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答
  • 富有想象力的人

    3 粉丝0 提问6 回答

扫码关注云+社区

领取腾讯云代金券