将彩色图像转换为灰度

我想将彩色图像转换为灰度。首先我获取彩色图像的数据并更改此数据但是当我想从这些数据创建一个gary图像时,我有一个像这样的错误… 在此处输入图像描述

getData()maethod:

public double[] getData(BufferedImage a){ double[] data2=new double[h*w]; int red=0,green=0,blue=0; int counter=0; for(int w1=0;w1<w;w1++){ for(int h1=0;h1> 16; green=(rgb)>>8; blue=(rgb); data2[counter]=(red+green+blue)/3; counter++; } } return data2; } 

createimage()方法:

 void createImage(){ double[] data1=getData(colorImage); BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY); WritableRaster raster = image.getRaster(); int counter = 0 ; for(int i = 0; i<h; i++){ for(int j = 0; j<w; j++){ raster.setSample(i, j, 0, data1[counter]); counter++; } } } 

因为它找我,必须交换setSample调用中的i和j。 (或者在BufferedImage中使用w和h)