根据the document,android.graphics.Color有一个名为RGBToHSV
的方法,可以将RGB值转换为HSV,这是文档告诉我的:
public static void RGBToHSV (int red, int green, int blue, float[] hsv)
将RGB组件转换为HSV。
hsv[0]
是Hue [0 .. 360)hsv[1]
是饱和度[0 ... 1]hsv[2]
是值[0 ... 1]参数
- 红色:红色成分值[0..255]
- 绿色:绿色成分值[0..255]
- 蓝色:蓝色组件值[0..255]
- hsv :3个元素数组,用于保存生成的HSV组件。
但是当我编写一个程序来测试它时,它无法正常工作。
float[] hsv = new float[3];
RGBToHSV(255, 255, 0, hsv);
Log.i("HSV_H", "" + hsv[0]); // always output 0.0
这是一个错误吗?
答案 0 :(得分:4)
您的期望值是多少?对我来说似乎有效。
我使用的代码:
float[] hsv = new float[3];
android.graphics.Color.RGBToHSV(255, 255, 0, hsv);
Log.i("HSV_H", "Hue=" + hsv[0]);
Log.i("HSV_H", "Saturation=" + hsv[1]);
Log.i("HSV_H", "Value=" + hsv[2]);
结果:
Hue=60.0
Saturation=1.0
Value=1.0
这是在1.6模拟器上使用针对Android SDK 1.6(API级别4)的项目运行的。
答案 1 :(得分:1)
hsv [1],hsv [2]的结果是一个十进制数,因此必须乘以100才能得到百分比。
答案 2 :(得分:0)
没有迹象表明RGBtoHSV正在为hsv数组分配任何值;尝试这样的事情:
RGBtoHSV(255, 255, 0, hsv);
然后检查hsv [0]的值。