将彩色图像转换为灰度 [英] convert color image to grayscale

查看:150
本文介绍了将彩色图像转换为灰度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to convert a color image to grayscale.First I getting the data of color image and change this data but when I want to create a gary image from this data I have a error like this...

getData()maethod:

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<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()方法:

createimage() method:

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。 (或w和h在BufferedImage中)

as it looks for me, the i and j in the setSample call must be swapped. (or w and h in BufferedImage)

这篇关于将彩色图像转换为灰度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆