【发布时间】:2015-08-17 08:37:09
【问题描述】:
我通过以下方式获得像素的灰度值:
val=img.getRGB(j, i) & 0xFF;
用于处理目的。
现在,处理后我想要返回红色、绿色和蓝色值。我该怎么做?
【问题讨论】:
-
将初始值保存在单独的变量中或重新提取它。不过,我不确定您的代码行如何获得“灰度值”。这看起来可能会得到 alpha 值,而不是别的。
-
好的。会尝试这样做
我通过以下方式获得像素的灰度值:
val=img.getRGB(j, i) & 0xFF;
用于处理目的。
现在,处理后我想要返回红色、绿色和蓝色值。我该怎么做?
【问题讨论】:
这里是一些示例代码,用于获取BufferedImage 上坐标 (x, y) 处像素的 r、g、b、alpha 和灰度值。
BufferedImage image; // assume you have this image
int rgb = image.getRGB(x, y); // get the desired pixel
int r = (rgb >> 16) & 0xFF;
int g = (rgb >> 8) & 0xFF;
int b = (rgb & 0xFF);
int alpha = (rgb >> 24) & 0xFF;
int gray = (r + g + b) / 3; // rgb are not affected
【讨论】:
使用以下内容:-
int r=(rgb>>16) & 0xff;
int g=(rgb>>8) & 0xff;
int b=(rgb) & 0xff;
在哪里int rgb=img.getRGB(j, i);
存储这些值以供以后检索。
参考:RGB values of an image
如果是灰度图像:-
int rgb = (val << 16) | (val << 8) | (val << 0);
你可以像上面一样得到灰度图像的rgb值,然后应用前面提到的寻找r,g和b的方法。
【讨论】: