我有一个问题,侵蚀插件在马文图像处理框架。我想做侵蚀,但不幸的是,在那之后,我没有得到图像的输出。这是我的密码:
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);当然,我使用的是JavaJDK1.7和MarvinFramework1.5.0,我对.jar文件做了同样的尝试,没有做任何更改。
有人能帮我吗?
发布于 2014-05-09 14:00:54
您的代码中有一些问题。你没有正确地使用马文。
1.加载插件
必须使用MarvinPluginLoader创建侵蚀插件。
tempPlugin = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.morphological.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();
}
}https://stackoverflow.com/questions/23551483
复制相似问题