使用BufferedImage从Java的RGB色彩空间获取灰度像素值

问题描述

@H_301_0@这并不是听起来那么简单,因为对于如何将颜色映射到灰度没有100%正确的答案。

@H_301_0@我要使用的方法是先将RGB转换为HSL,然后将S部分设置为0(并可选地转换回RGB),但这可能并不是您想要的。(它等于最高和最低rgb值的平均值,因此与所有3个平均值的平均值略有不同)

解决方法

有人知道将返回的RGBint值<BufferedImage> getRGB(i,j)转换为灰度值的简单方法吗?

我将使用此方法将它们分解,从而对RGB值进行平均。

int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;

然后平均红色,绿色,蓝色。

但是我觉得对于这样一个简单的操作,我一定会缺少一些东西…

在很好地回答了另一个问题之后,我应该弄清我想要的东西。

我想获取从getRGB(i,j)返回的RGB值,并将其转换为代表该像素“暗度”的0-255范围内的白色值。

这可以通过平均等来完成,但是我正在寻找OTS实施以节省几行。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”