0

以下のコードがあり、正常にコンパイルされます。デバッグを行ったところ、画像ファイルを認識し、寸法を確認し、getDimensions() メソッドを使用してスライス数を確認できました。ただし、 getPixel(x,y) メソッドを使用しようとすると。それは私にすべて0の配列を返し続けます。私のイメージは真っ黒ではありません。

何が起こっているのかわかりません。しかし、私はいくつかの助けを使うことができました。

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.imageio.ImageIO;
import ij.ImagePlus;
import java.util.ArrayList;


public class Test{

public static void main(String args[])throws IOException{

    try{
        ArrayList<Integer> totalWhitePixels = new ArrayList<Integer>(); 
        ArrayList<Integer> totalYellowPixels = new ArrayList<Integer>(); 
        ArrayList<Integer> totalBluePixels = new ArrayList<Integer>(); 


        //read image file
        ImagePlus img = new ImagePlus("C:\\Image74.tif");


        for(int n=1; n<=img.getNSlices(); n++){
            img.setSlice(n);
            int whitePixelCount = 0;
            int yellowPixelCount = 0;
            int bluePixelCount = 0;
            int testPixelCount = 0;
            //write file
            FileWriter fstream = new FileWriter("C:\\log.txt");
            BufferedWriter out = new BufferedWriter(fstream);


            //find pixel colors
            for (int y = 0; y < img.getHeight(); y++) {
                for (int x = 0; x < img.getWidth(); x++) {
                    int[] c = img.getPixel(x,y);

                    //testPixel
                    if (c[0]==0 && c[1]==0 && c[2]==0 && c[3]==0){
                        testPixelCount++;
                    }


                    //whitePixel
                    if (c[0]> 240 && c[1]> 240 && c[2]> 240) {
                            whitePixelCount++;
                    }
                    //yellowPixel
                    if (c[0]> 240 && c[1]> 240 && c[2]> 0){
                        yellowPixelCount++; 
                    }
                    //bluePixel
                    if (c[0]> 0 && c[1]> 0 && c[2]> 240){
                            bluePixelCount++;
                    }
                }
            }

            //System.out.println(whitePixelCount + "." + yellowPixelCount + "." + bluePixelCount);
            //System.out.println(testPixelCount);

            totalWhitePixels.add(whitePixelCount);
            totalYellowPixels.add(yellowPixelCount);
            totalBluePixels.add(bluePixelCount);
        }
    }


    catch (IOException e) {
            e.printStackTrace();
    }   
}
}   
4

1 に答える 1

0

Fiji's tips for developersで提案されているように、IJ.openImage(java.lang.String path)の代わりに使用してみてください。ここでさらに多くの開発者リソースを見つけることができ、いつでもimagej メーリング リストで質問することができます。new ImagePlus("C:\\Image74.tif")

于 2013-07-20T10:02:26.593 に答える