使用imageJ库扫描.tiff图像的像素

时间:2012-02-07 05:42:40

标签: java getpixel imagej

我正在使用imageJ库来读取.tiff图像文件。但是当我试图在变量c中读取image1的像素时,我得到一个错误,说“不兼容的类型:required int,found int []。 我很安静java新手,所以有人可以告诉我如何解决这个问题。该代码在其他图像格式下工作正常。

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;

public class GetPixelCoordinates {

//int y, x, tofind, col;
/**
 * @param args the command line arguments
 * @throws IOException  
 */
    public static void main(String args[]) throws IOException {
        try {
            //read image file

            ImagePlus img = new ImagePlus("E:\\abc.tiff");

            //write file
            FileWriter fstream = new FileWriter("E:\\log.txt");
            BufferedWriter out = new BufferedWriter(fstream);

            //find cyan pixels
            for (int y = 0; y < img.getHeight(); y++) {
                for (int x = 0; x < image.getWidth(); x++) {

                    int c = img.getPixel(x,y);
                    Color color = new Color(c);


                     if (color.getRed() < 30 && color.getGreen() >= 225 && color.getBlue() >= 225) {
                         out.write("CyanPixel found at=" + x + "," + y);
                         out.newLine();

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

1 个答案:

答案 0 :(得分:1)

如果查看documentation for getPixel(int,int) in ImagePlus,您会看到它返回int个数组而不是int个数组:

  

将(x,y)处的像素值作为4个元素数组返回。灰度值在第一个元素中重新调整。 RGB值在前3个元素中返回。对于索引彩色图像,RGB值在前三个3元素中返回,索引(0-255)在最后一个元素中返回。

看起来您正在处理RGB图像,因此您应该能够执行以下操作:

int [] colorArray = image1.getPixel(x,y);

int redValue = colorArray[0];
int greenValue = colorArray[1];
int blueValue = colorArray[2];