如何从ImageJ宏调用/执行java程序?

时间:2013-02-05 09:51:07

标签: weka imagej

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

无论如何,在我试图执行的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,但没有运气。

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

1 个答案:

答案 0 :(得分:3)

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

随着Weka被包含在斐济,您应该能够运行任何公共静态方法,如call("trainableSegmentation.Weka_Segmentation.loadData", "/home/user/data.arff");(请参阅here)。但是,如果您希望与Java类进行更多交互,建议使用一些更强大的脚本语言,如JavaScriptPython,这两种语言也包含在斐济中。