putPixel 与 ImageJ

putPixel with ImageJ

我是 ImageJ 的初学者,我正在尝试使用 putPixel,但没有成功。

ImagePlus ip = IJ.getImage();
    HistogramWindow histo = new HistogramWindow(ip);
    int w = ip.getWidth(), h = ip.getHeight();
    int[] pixels = new int[4];
    int[] pxltmp = {0,0,0};
    int temp = 0;
    for (int j = 0; j < h; j++){
        for (int i = 0; i < w; i++) {
            pixels = (int[])ip.getPixel(i,j);
            pxltmp[0] = pixels[2];
            pxltmp[1] = pixels[1];
            pxltmp[2] = pixels[0];
            **ip.putPixel(i,j,pxltmp);**
        }
    }

我的插件在这一行中断,我正在尝试向 putPixel 发送一个 x、y 和一个包含三个像素的数组。我究竟做错了什么?另外,有没有更好的方法来获取 ImageJ 中的错误消息,我现在一无所知。我尝试设置 Eclipse,但那里有问题。

您的 ip 变量是 ImagePlus 并且没有 putPixel() 方法。首先获取 ImageProcessor,然后它应该可以工作。

ImagePlus imp = IJ.getImage();
ImageProcessor ip = imp.getProcessor();
ip.putPixel(x,y,value);

您似乎只想将 RGB 转换为 BGR。使用 ImageJ 命令可以更简单地完成此操作:

IJ.run(imp, "RGB Stack", "");
IJ.run(imp, "Reverse", "");
IJ.run("Stack to RGB", "");