您的代码中存在一些问题。您没有正确使用 Marvin。
1.加载插件
您必须使用MarvinPluginLoader创建 Erosion 插件:
tempPlugin = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.morphological.erosion");
因此,正确加载了 Erosion 插件和依赖项(因为插件可能使用其他插件)。
2.在Erosion的情况下,不能使用相同的图像对象作为输入和输出图像
您必须使用两个引用,例如克隆:
tempPlugin.process(resultImage.clone(), resultImage);
例子:
下面给出了一个源代码,它实现了与侵蚀插件页面中呈现的相同结果:
public class SimpleExample {
private MarvinImagePlugin tempPlugin;
public SimpleExample(){
// 1. Load and set up plug-in.
tempPlugin = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.morphological.erosion");
boolean[][] m = new boolean[][] {
{true,true,true},
{true,true,true},
{true,true,true}
};
tempPlugin.setAttributes("matrix", m);
// 2. Load image
MarvinImage image = MarvinImageIO.loadImage("./res/erosion_in.png");
MarvinImage resultImage = MarvinColorModelConverter.rgbToBinary(image, 127);
// 3. Process and save image
tempPlugin.process(resultImage.clone(), resultImage);
resultImage = MarvinColorModelConverter.binaryToRgb(resultImage);
resultImage.update();
MarvinImageIO.saveImage(resultImage, "./res/erosion_out.png");
}
public static void main(String[] args) {
new SimpleExample();
}
}