检测颜色时,可以尝试使用其他颜色模型来获取更准确的结果。此外,还应该确保在使用RGB值之前对它们进行适当的转换和舍入。
以下是使用HSV(色相、饱和度、亮度)模型来获取颜色的示例代码:
//获取bitmap对象
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int pixel = bitmap.getPixel(x, y);
//从RGB转换到HSV
float[] hsv = new float[3];
Color.RGBToHSV(Color.red(pixel), Color.green(pixel), Color.blue(pixel), hsv);
//从HSV转换回RGB
int newPixel = Color.HSVToColor(hsv);
//将RGB舍入到最近的整数
int red = Math.round(Color.red(newPixel));
int green = Math.round(Color.green(newPixel));
int blue = Math.round(Color.blue(newPixel));
以上示例代码中,我们提取了一个像素点的RGB值并将其转换为HSV。然后,我们将HSV值转换回RGB,并将结果舍入到最近的整数。这些舍入操作可以确保我们的RGB值在使用前获得良好的准确度。