判断颜色是否相似

方法一

    bool ColorGap(Color c1, Color c2)
    {

        float H, S, V;
        float h, s, v;
        //将检测颜色标准和当前颜色由RGB颜色空间转换到HSV颜色空间
        Color.RGBToHSV(c1, out H, out S, out V);
        Color.RGBToHSV(c2, out h, out s, out v);
        //获取当前颜色HSV值和颜色标准HSV值的差,并设置为绝对值
        float ClanpH = Mathf.Abs(h * 360 - H * 360);
        float ClanpS = Mathf.Abs(s * 255 - S * 255);
        float ClanpV = Mathf.Abs(v * 255 - V * 255);
        //向下取整数
        ClanpH = Mathf.Floor(ClanpH);
        ClanpS = Mathf.Floor(ClanpS);
        ClanpV = Mathf.Floor(ClanpV);
        //根据当前HSV值的差来判断当前颜色和颜色检测标准的相似度
        if (ClanpH <= 10 && ClanpS <= 30 && ClanpV < 20)
        {
            return true;
        }
        return false;
    }

方法二

 public float Difference(Color c1, Color c2)
    {
        c1 *= 255; c2 *= 255;
        float averageR = (c1.r + c2.r) * 0.5f;
        return ((2 + averageR / 255f) * Mathf.Pow(c1.r - c2.r, 2) + 4 * Mathf.Pow(c1.g - c2.g, 2) + (2 + (255 - averageR) / 255f) * Mathf.Pow(c1.b - c2.b, 2)) / (3 * 255f) / (3 * 255);
    }

方法三

 bool EqualsColor2(Color c1, Color c2)
    {

        return Mathf.Abs(c1.r - c2.r) <= 0.015f && Mathf.Abs(c1.g - c2.g) <= 0.015f && Mathf.Abs(c1.b - c2.b) <= 0.015f &&
               Mathf.Abs(c1.r - c2.r) + Mathf.Abs(c1.g - c2.g) + Mathf.Abs(c1.b - c2.b) < 0.03f;
    }

 

posted @ 2021-08-09 17:29  咕咕不是猫头鹰  阅读(388)  评论(0)    收藏  举报