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

2022-09-04 02:02:12

在常规Java应用程序中,我有一个BufferedImage,我想用ImageJ进行操作。我有一个宏,正是我需要执行的。我怀疑第一步是制作一个ImagePlus对象,但我不确定如何从Java中对ImagePlus对象运行宏。此处找到的 ImageJ 教程的第 7.3 节说:

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

但没有说明如何这样做。如果有人可以解释如何,或者向我指出一个这样做的资源,我将不胜感激。


答案 1

以下站点通过示例描述了 ImageJ API:http://albert.rierol.net/imagej_programming_tutorials.html#ImageJ 编程基础知识

示例包括读取图像,处理像素等。好吧,我想你还需要大量使用API文档


答案 2

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

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");

我希望它能帮助你开始:)


推荐