我想要做的是使用训练有素的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,但没有运气。
有人对此有任何暗示吗?我将不胜感激... 谢谢!
答案 0 :(得分:3)
由于您在运行ImageJ / Fiji时已经运行Java,因此无需再通过exec
调用Java运行时,只需使用call("Class.method", arg1, ...)
宏函数。
随着Weka被包含在斐济,您应该能够运行任何公共静态方法,如call("trainableSegmentation.Weka_Segmentation.loadData", "/home/user/data.arff");
(请参阅here)。但是,如果您希望与Java类进行更多交互,建议使用一些更强大的脚本语言,如JavaScript或Python,这两种语言也包含在斐济中。