Android RGB To HSV方法不起作用

时间:2010-10-15 14:31:03

标签: android

根据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

这是一个错误吗?

3 个答案:

答案 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]的值。