首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将RGB转换为HSV

将RGB转换为HSV
EN

Stack Overflow用户
提问于 2015-11-28 18:40:01
回答 1查看 924关注 0票数 1

嗨,我想转换从rgb到hsv,我一直遵循算法从easyRGB.com。但不起作用它显示出比正常情况下更红。我重写了几次相同的算法,并进行了修改,但是我找不到错误。有什么想法吗?这就是算法。

代码语言:javascript
复制
    public static double[] RGB2HSV(double[] tmp){

    double R = tmp[0] / 255.0;
    double G = tmp[1] / 255.0;
    double B = tmp[2] / 255.0;

    double min = Math.min(Math.min(R, G), B);
    double max = Math.max(Math.max(R, G), B);
    double delta = max - min;

    double H = max;
    double S = max;
    double V = max;

    if(delta == 0){
        H = 0;
        S = 0;
    }else{

        S = delta / max;

        double delR = ( ( ( max - R ) / 6 ) + ( delta / 2 ) ) / delta;
        double delG = ( ( ( max - G ) / 6 ) + ( delta / 2 ) ) / delta;
        double delB = ( ( ( max - B ) / 6 ) + ( delta / 2 ) ) / delta;

        if(R == max){
            H = delB - delG;
        }else if(G == max){
            H = (1/3) + delR - delB;
        }else if(B == max){
            H = (2/3) + delG - delR;
        }

        if(H < 0) H += 1;
        if(H > 1) H -= 1;
    }

    double[] hsv = new double[3];
    hsv[0] = H;
    hsv[1] = S;
    hsv[2] = V;
    return hsv;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-28 18:58:49

1/3(2/3)的值是0,因为您使用两个整数操作,所以结果也是整数。

使用1.0 / 3.02.0 / 3.0代替。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33975014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档