0

ImageJ ライブラリを使用して 4 つのグレーレベルの出力画像を生成して表示しようとしていますが、この行の reduceBy メソッドでエラーが発生しています

 out.getPixel(r, c) = (in.getPixel(r, c) / factor) * factor;

代入の左辺は変数でなければならないと言っていますが、確かに変数ですか?

ij.ImagePlus をインポートします。インポート iptoolkit.*;

public class ReduceGreyLevelsIJ {

public static void main(String[] args) {
    String imageDir = "C:/Users/John/Dropbox/finalYear/Project/Leaves/";        
    MainWindow mw = new MainWindow();   

    ImagePlus src = new ImagePlus(imageDir +"ashLeafBW.tif");
    ImagePlus dst1 = new ImagePlus();
    src.show("Original");

    reduceBy(64, src, dst1);
    dst1.show("4 Grey Levels");
}

static void reduceBy(int factor, ImagePlus in, ImagePlus out) {
    for (int r = 0; r < in.getHeight(); r++) {
        for (int c = 0; c < in.getWidth(); c++) {
            out.getPixel(r, c) = (in.getPixel(r, c) / factor) * factor;
        } // c
    } // r
}  // reduceBy

}

4

1 に答える 1

0

いいえ、変数ではありません。これは int を返すメソッドの呼び出しであり、決して変数と同じではありません。データ型と変数を混同しないでください。

in から値を取得し、それを変換した後、out に格納する必要があると思います。そのためには、次のようなことを行う必要があります (私はテストしていませんが、これは少なくとも従わなければならないロジックです)。

int p = (in.getPixel(r, c) / factor) * factor;
out.putPixel(r,c,p);
于 2013-11-06T21:41:50.377 に答える