不+ =返回新分配的值?

时间:2015-02-01 20:31:17

标签: java netbeans

我正在循环图像并对所有像素的值求和。我这样做是为了创建一个完整的图像。为了使最后一个值易于使用,我创建了the_sum变量,我为每个像素添加了值。

如果您知道积分图像的工作原理,您就会知道此图像中的每个像素都包含加上之前所有像素的总和。

因此:

integral_image[x][y][0] = (the_sum[0]+= (pixel & 0x00FF0000)>>16);

我增加总和并将其分配给当前像素。但是,Netbeans IDE警告我,我不是在阅读the_sum

image description

算法中的某些内容被破坏了,我不确定它是什么。我的方法是错误的还是NetBeans的误报?

为避免误解,这是整个方法:

  /* Generate an integral image. Every pixel on such image contains sum of colors or all the
     pixels before and itself.
  */
  public static double[][][] integralImage(BufferedImage image) {
    int w = image.getWidth();
    int h = image.getHeight();

    double integral_image[][][] = new double[w][h][3];
    double the_sum[] = new double[3];

    for (int x = 0; x < w; x++) {
      for (int y = 0; y < h; y++) {
        int pixel = image.getRGB(x, y);
        integral_image[x][y][0] = (the_sum[0]+= (pixel & 0x00FF0000)>>16);
        integral_image[x][y][1] = (the_sum[1]+= (pixel & 0x0000FF00)>>8);
        integral_image[x][y][2] = (the_sum[2]+=  pixel & 0x000000FF);
      }
    }

    return integral_image;
  }

1 个答案:

答案 0 :(得分:1)

是的,+=返回新分配的值。这是netbeans的误报。

  

在运行时,赋值表达式的结果是赋值发生后变量的值。

http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26