Android 为什么这个Color.HSVToColor方法返回这个奇怪的值(带负号)?

Android 为什么这个Color.HSVToColor方法返回这个奇怪的值(带负号)?,android,colors,hsv,color-space,android-color,Android,Colors,Hsv,Color Space,Android Color,这是一个SSCCE,用于证明当选中时,HSV颜色{11.0f,9.0f,215f}是白色的(尽管V或value,215的值在此工具上自动更改为100),而当我应用android的color.HSVToColor(float[]f)时应用了函数,结果是值-53504,当我查看减号时,它看起来可疑。此外,它的颜色原来是红色的 问题是为什么以及如何解决这个问题? MainActivity.java: public class MainActivity extends Activity { V

这是一个SSCCE,用于证明当选中时,
HSV
颜色
{11.0f,9.0f,215f}
是白色的(尽管
V
value
215
的值在此工具上自动更改为
100
),而当我应用android的
color.HSVToColor(float[]f)时应用了
函数,结果是值
-53504
,当我查看减号时,它看起来可疑。此外,它的颜色原来是红色的

问题是为什么以及如何解决这个问题?

MainActivity.java:

public class MainActivity extends Activity {
    View view;
    TextView textView;
    float [] hsv = {11.0f, 9.0f, 215.0f};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        view = findViewById(R.id.mainActivity_view);
        textView = (TextView) findViewById(R.id.mainActivity_textView);

        int androidColor = Color.HSVToColor(hsv);

        view.setBackgroundColor(androidColor);
        textView.setText(androidColor+"");
    }
}
活动\u main.java:

public class MainActivity extends Activity {
    View view;
    TextView textView;
    float [] hsv = {11.0f, 9.0f, 215.0f};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        view = findViewById(R.id.mainActivity_view);
        textView = (TextView) findViewById(R.id.mainActivity_textView);

        int androidColor = Color.HSVToColor(hsv);

        view.setBackgroundColor(androidColor);
        textView.setText(androidColor+"");
    }
}


十进制负数是完全合理的。正好有一半的颜色是负数,因为Java没有
无符号int
。使用
Integer.toHexString()
并查看十六进制中的颜色值。此外,您的值超出了的范围,因为
9f
不在0和1之间,
215f
不在0和1之间。您的值似乎不适用于您的网站,因为该网站上的B必须介于1和100之间。但即使在这之后,它也需要在0和1之间进行规范化。我想,问问OpenCV4Android团队,他们是否是给你这些值的人。与Android docs一致,S和V的范围从0到1。我可以做出两个很好的猜测——这些不是浮点数,而是字节,在这种情况下,除以256会得到很好的值。或者它们应该在1到100之间,所以除以100会得到很好的值。如果返回216,我会先尝试256解决方案,然后再尝试100。您可能会发现以下阅读内容很有趣: