gpt4 book ai didi

java - Color.RGBToHSV 类型不匹配 : cannot convert from void to float[]

转载 作者:行者123 更新时间:2023-12-01 12:36:10 25 4
gpt4 key购买 nike

使用ADT

import android.graphics.Color;

我不断收到类型不匹配:无法从 void 转换为 float[]

float[] hsv = new float[3];

hsv = Color.RGBToHSV(rgb[0], rgb[1], rgb[2], hsv);

Color.RGBToHSV(rgb[0], rgb[1], rgb[2], hsv); 下的错误行突出显示,并读取类型不匹配。有没有办法解决?此代码之前是为 JRE 设置的,但我将其转换为 ADT。

之前的内容是:

hsv = java.awt.Color.RGBtoHSB(rgb[0], rgb[1], rgb[2], hsv);

如何纠正这种类型不匹配?

我已经尝试过这种方式,但我需要将其添加到 float[] hsv 数组中;

Color.RGBToHSV(rgb[0], rgb[1], rgb[2], hsv);

任何帮助将不胜感激。

最佳答案

这是来自android源代码

public static void RGBToHSV(int red, int green, int blue, float hsv[]) {
if (hsv.length < 3) {
throw new RuntimeException("3 components required for hsv");
}
nativeRGBToHSV(red, green, blue, hsv);
}

这意味着它将 RGB 颜色转换为 HSV,并将它们放入数组中。该方法不返回任何内容,与 java.awt.Color 源代码

相反
public static float[] RGBtoHSB(int r, int g, int b, float[] hsbvals) {
float hue, saturation, brightness;
if (hsbvals == null) {
hsbvals = new float[3];
}
int cmax = (r > g) ? r : g;
if (b > cmax) cmax = b;
int cmin = (r < g) ? r : g;
if (b < cmin) cmin = b;

brightness = ((float) cmax) / 255.0f;
if (cmax != 0)
saturation = ((float) (cmax - cmin)) / ((float) cmax);
else
saturation = 0;
if (saturation == 0)
hue = 0;
else {
float redc = ((float) (cmax - r)) / ((float) (cmax - cmin));
float greenc = ((float) (cmax - g)) / ((float) (cmax - cmin));
float bluec = ((float) (cmax - b)) / ((float) (cmax - cmin));
if (r == cmax)
hue = bluec - greenc;
else if (g == cmax)
hue = 2.0f + redc - bluec;
else
hue = 4.0f + greenc - redc;
hue = hue / 6.0f;
if (hue < 0)
hue = hue + 1.0f;
}
hsbvals[0] = hue;
hsbvals[1] = saturation;
hsbvals[2] = brightness;
return hsbvals;
}

返回类型不同。 float[]void

关于java - Color.RGBToHSV 类型不匹配 : cannot convert from void to float[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25569678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com