【问题标题】:How to obtain the red, green and blue values from gray value in java?如何在java中从灰度值中获取红绿蓝值?
【发布时间】:2015-08-17 08:37:09
【问题描述】:

我通过以下方式获得像素的灰度值:

val=img.getRGB(j, i) & 0xFF;

用于处理目的。

现在,处理后我想要返回红色、绿色和蓝色值。我该怎么做?

【问题讨论】:

  • 将初始值保存在单独的变量中或重新提取它。不过,我不确定您的代码行如何获得“灰度值”。这看起来可能会得到 alpha 值,而不是别的。
  • 好的。会尝试这样做

标签: java image


【解决方案1】:

这里是一些示例代码,用于获取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

【讨论】:

    【解决方案2】:

    使用以下内容:-

    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的方法。

    【讨论】:

    • 检查我的编辑。希望这能回答你的问题。我假设您想要新灰度值的 r、g 和 b 值,即 val。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2013-05-17
    • 2015-06-08
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多