1
カラー画像をグレースケールに変換したいです。最初にカラー画像のデータを取得してこのデータを変更しますが、このデータからゲーリー画像を作成する場合は、このようなエラーがあります。 。 カラー画像をグレースケールに変換する
の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()メソッド:
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のカウンタはどこにもインクリメントしていません。 – Dimme
double [] data2 =新しいdouble [h * w]; hとwはどこから来ていますか? – Dimme
wとhは読み込まれた画像の幅と高さです。 – Tofiq