преобразовать цветное изображение в оттенки серого - PullRequest
1 голос
/ 14 ноября 2011

Я хочу преобразовать цветное изображение в градации серого. Сначала я получаю данные цветного изображения и изменяю эти данные, но когда я хочу создать изображение Гэри из этих данных, у меня появляется ошибка, подобная этой ... enter image description here

метод getData ():

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<h;h1++){
              int rgb=a.getRGB(w1,h1);
              red=(rgb)>> 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++;
           }
        }
}

1 Ответ

2 голосов
/ 14 ноября 2011

, как мне кажется, i и j в вызове setSample должны поменяться местами. (или w и h в BufferedImage)

...