Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将ImageJ用作单独Java应用程序的库?_Java_Image Processing_Imagej - Fatal编程技术网

如何将ImageJ用作单独Java应用程序的库?

如何将ImageJ用作单独Java应用程序的库?,java,image-processing,imagej,Java,Image Processing,Imagej,在常规Java应用程序中,我有一个BuffereImage,我想用ImageJ处理它。我有一个宏,这正是我需要执行的。我怀疑第一步是创建一个ImagePlus对象,但我不确定如何在Java中对ImagePlus对象运行宏。ImageJ教程的第7.3节指出: 如果您决定使用ImagePlus作为内部图像格式,您也可以使用所有插件 来自ImageJ发行版的宏以及所有其他ImageJ插件 但没有说明如何做到这一点。如果有人能给我解释一下,或者给我指点一个这样做的资源,我将不胜感激。下面的网站用例子介绍

在常规Java应用程序中,我有一个BuffereImage,我想用ImageJ处理它。我有一个宏,这正是我需要执行的。我怀疑第一步是创建一个ImagePlus对象,但我不确定如何在Java中对ImagePlus对象运行宏。ImageJ教程的第7.3节指出:

如果您决定使用ImagePlus作为内部图像格式,您也可以使用所有插件 来自ImageJ发行版的宏以及所有其他ImageJ插件


但没有说明如何做到这一点。如果有人能给我解释一下,或者给我指点一个这样做的资源,我将不胜感激。

下面的网站用例子介绍了ImageJ API:编程基础


示例包括读取图像、处理像素等。好吧,我想您还需要大量使用。这里是一个使用imagej for photo Share web app的开源项目实现

将此作为在应用程序中实现imagej API的参考


以下是一个示例代码,用于打开图像、反转图像并将其保存回:

import ij.ImagePlus;
import ij.io.FileSaver;
import ij.process.ImageProcessor;

ImagePlus imgPlus = new ImagePlus("path-to-sample.jpg");
ImageProcessor imgProcessor = imgPlus.getProcessor();
imgProcessor.invert();
FileSaver fs = new FileSaver(imgPlus);
fs.saveAsJpeg("path-to-inverted.jpg");
下面是一个示例代码,演示了如何操作图像使其具有灰度:

BufferedImage bufferedImage = imgProcessor.getBufferedImage();
for(int y=0;y<bufferedImage.getHeight();y++)
{
    for(int x=0;x<bufferedImage.getWidth();x++)
    {
        Color color = new Color(bufferedImage.getRGB(x, y));
        int grayLevel = (color.getRed() + color.getGreen() + color.getBlue()) / 3;
        int r = grayLevel;
        int g = grayLevel;
        int b = grayLevel;
        int rgb = (r<<16)  | (g<<8)  | b;
        bufferedImage.setRGB(x, y, rgb);
    }
}
ImagePlus grayImg = new ImagePlus("gray", bufferedImage);
fs = new FileSaver(grayImg);
fs.saveAsJpeg("path-to-gray.jpg");
BufferedImage BufferedImage=imgProcessor.getBufferedImage();

对于(int y=0;这太完美了!
IJ.run
正是我想要的。非常感谢。这是否也适用于PNG?或其他图像格式?我在寻找灰度转换时发现了这些示例。也可以直接使用
ImageConverter
并替换两个ImageProc来完成灰度转换第一个示例中的essor行带有
ImageConverter converter=new ImageConverter(imgPlus)
,然后是
converter.convertToGray8();