颜色值近似判断

float[] white = new float[3];
float[] black = new float[3];
Color.RGBToHSV(100, 100, 111, white);
Color.RGBToHSV(0, 0, 0, black);
HSV hsv1=new HSV(white);
HSV hsv2=new HSV(black);//阈值设置40以下相似
Log.e("RunTest","init="+HSV.distanceOf(hsv1,hsv2)+"=");

 

package com.dzx.aidldemo.util;

/**
 * * ================================================
 * name:            HSV
 * guide:
 * author:          kimonik
 * version:          1.0
 * date:           2019/7/30
 * description:
 * introduce:
 * history:
 * ===================================================
 */
public  class HSV {
    public float H;
    public float S;
    public float V;

    public HSV() {
    }

    public HSV(float[] target) {
        if (target.length!=3){
            return;
        }
        H = target[0];
        S = target[1];
        V = target[2];
    }

    //self-defined
    private static final double R = 100;
    private static final double angle = 30;
    private static final double h = R * Math.cos(angle / 180 * Math.PI);
    private static final double r = R * Math.sin(angle / 180 * Math.PI);

    public static double distanceOf(HSV hsv1, HSV hsv2) {
        double x1 = r * hsv1.V * hsv1.S * Math.cos(hsv1.H / 180 * Math.PI);
        double y1 = r * hsv1.V * hsv1.S * Math.sin(hsv1.H / 180 * Math.PI);
        double z1 = h * (1 - hsv1.V);
        double x2 = r * hsv2.V * hsv2.S * Math.cos(hsv2.H / 180 * Math.PI);
        double y2 = r * hsv2.V * hsv2.S * Math.sin(hsv2.H / 180 * Math.PI);
        double z2 = h * (1 - hsv2.V);
        double dx = x1 - x2;
        double dy = y1 - y2;
        double dz = z1 - z2;
        return Math.sqrt(dx * dx + dy * dy + dz * dz);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值