【问题标题】:convert color image to grayscale将彩色图像转换为灰度
【发布时间】:2011-12-28 05:29:39
【问题描述】:

我想将彩色图像转换为灰度。首先我获取彩色图像的数据并更改此数据,但是当我想从该数据创建一个加里图像时,我遇到了这样的错误...

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++;
           }
        }
}

【问题讨论】:

  • 这不是问题,但 getData 中的计数器没有在任何地方递增。
  • double[] data2=new double[h*w]; h 和 w 来自哪里?
  • w 和 h 是加载图片的宽度和高度。

标签: java image-processing bufferedimage


【解决方案1】:

当它寻找我时, setSample 调用中的 i 和 j 必须交换。 (或 BufferedImage 中的 w 和 h)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多