[英]Marvin Image Processing Framework - Erosion plugin issue
我在Marvin Image Processing Framework中遇到了Erosion插件的问题。 我想做侵蚀,但不幸的是,在那之后我没有输出图像。 这是我的代码:
tempPlugin = new Erosion();
boolean[][] m = new boolean[][] {
{true,true,true},
{true,true,true},
{true,true,true}
};
tempPlugin.setAttributes("matrix", m);
resultImage = MarvinColorModelConverter.rgbToBinary(resultImage, 127);
tempPlugin.process(resultImage, resultImage);
resultImage = MarvinColorModelConverter.binaryToRgb(resultImage);
resultImage.update();
imagePanelNew.setImage(resultImage);
我正在使用Java JDK 1.7和Marvin Framework 1.5.0当然,我已尝试对.jar文件执行相同操作,无需更改。
有人可以帮帮我吗?
您的代码中存在一些问题。 你没有正确使用马文。
1.加载插件
您必须使用MarvinPluginLoader创建一个Erosion插件:
tempPlugin = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.morphological.erosion");
因此,Erosion插件和依赖项(因为插件可能使用其他插件)被正确加载。
2.在侵蚀的情况下,您不能使用相同的图像对象作为输入和输出图像
您必须使用两个引用,例如克隆:
tempPlugin.process(resultImage.clone(), resultImage);
例:
下面是一个源代码,它实现了Erosion Plug-in页面中显示的相同结果:
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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.