BufferedImage:如果之前调用了getter,则setRGB(getRGB())不设置数据

时间:2014-11-11 18:45:38

标签: java opencv colors bufferedimage

我想了解为什么

bufferedImg.setRGB(x, y, color.getRGB());
如果我在

之前打印一个数据,

根本不设置数据(白色像素)

System.out.println(color.getRGB());

,如下面的java代码:

...
    int height = img.getHeight();
    int width = img.getWidth();

    for(int i = 0; i < height; i++){
        for(int j = 0; j < width; j++){

           Color c = new Color(img.getRGB(j, i));

           int red = (int)(c.getRed() * 0.299);
           int green = (int)(c.getGreen() * 0.587);
           int blue = (int)(c.getBlue() *0.114);

           Color newColor = new Color(red + green + blue,
                red + green + blue, red + green + blue);

           System.out.println(newColor.getRGB());         // resets data
           img.setRGB(j, i, newColor.getRGB());
        }
    }

其他信息:

  • 它是将RGB转换为灰度的实现
  • 删除打印/日志行
  • ,效果非常好
  • (多次)调用println()之前或之后显示正确的数据
  • 缓冲图像源是一个openCV垫
  • 我没有在互联网上找到任何具体原因

希望一个人给我一些见解。

0 个答案:

没有答案