判断颜色是否相似
方法一
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; }

浙公网安备 33010602011771号