如何将ImageJ用作单独Java应用程序的库?
在常规Java应用程序中,我有一个BuffereImage,我想用ImageJ处理它。我有一个宏,这正是我需要执行的。我怀疑第一步是创建一个ImagePlus对象,但我不确定如何在Java中对ImagePlus对象运行宏。ImageJ教程的第7.3节指出: 如果您决定使用ImagePlus作为内部图像格式,您也可以使用所有插件 来自ImageJ发行版的宏以及所有其他ImageJ插件如何将ImageJ用作单独Java应用程序的库?,java,image-processing,imagej,Java,Image Processing,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();