0

我想做的是使用训练有素的 WEKA 模型对图像进行分类。我知道 ImageJ/Fiji 的 Advanced Weka Segmentation 插件的存在,但我使用的是定制的特征向量,它无法使用它。

无论如何,在我试图执行的 ImageJ 宏中:

exec("java", "-cp", "/home/dionysis/weka-3-7-7/weka.jar", "weka.classifiers.trees.RandomForest",  "-T", "/home/dionysis/Desktop/CNH/cnh-data/2class-deffeat-data-20121218.arff", "-l", "/home/dionysis/Desktop/CNH/cnh-data/2class-deffeat-ranfor-classifier-20121218.model.model", "-p", "0", ">", "/home/dionysis/Desktop/testrun-data.out");

这实质上是为 weka 运行终端命令。在 linux 终端中,它运行良好,但是,在宏中调用它并没有做任何事情。它甚至不会产生错误。

一开始,我认为问题在于我试图在系统的 JVM 上运行一个 java 程序,该程序是从运行在不同 JVM 上的 java 程序调用的(ImageJ/Fiji 与他们自己的 JVM 捆绑在一起)。出于这个原因,我尝试使用系统的 JVM 运行 ImageJ/Fiji,但没有运气。

有人对此有任何提示吗?我将不胜感激...谢谢!

4

1 回答 1

3

由于您在运行 ImageJ/Fiji 时已经在运行 Java,因此无需再次通过 调用 Java 运行时exec,只需使用call("Class.method", arg1, ...)宏函数即可。

随着 Weka 包含在 Fiji 中,您应该能够运行任何公共静态方法,例如call("trainableSegmentation.Weka_Segmentation.loadData", "/home/user/data.arff");(参见此处)。但是,如果您喜欢与 Java 类进行更多交互,建议使用一些更强大的脚本语言,如JavaScriptPython,它们也包含在 Fiji 中。

于 2013-02-05T13:17:47.687 回答