如何在jython脚本中保存ROI经理的ROI?

时间:2014-03-28 03:46:31

标签: jython imagej roi

我正在写一个半自动的juthon脚本。在某些时候,脚本停止等待用户手动添加一些ROI。 我需要的是一种方法来保存添加到ROI管理器的所有ROI。我尝试过以下方法:

RoiManager.runCommand("Save", ROIsOutpath)

但是我收到以下错误:

TypeError: runCommand(): self arg can't be coerced to ij.plugin.frame.RoiManager

当然,我正在学习jython(和一般的程序)。 简短的问题是:如何从Jython的ROImanager中保存多个ROI?

谢谢!

1 个答案:

答案 0 :(得分:2)

RoiManager#runCommand()方法不是静态的,这意味着您必须在RoiManager类的实例上调用它。要获取此实例,请致电:

rm = RoiManager.getInstance();
if (rm==None):
    rm = RoiManager();

以下代码打开示例图像,创建两个ROI,并将其保存在用户的 home 目录中:

from ij.plugin.frame import RoiManager;

rm = RoiManager.getInstance();
if (rm==None):
    rm = RoiManager();
imp = IJ.openImage("http://imagej.nih.gov/ij/images/blobs.gif");
imp.setRoi(100, 80, 50, 80);
rm.addRoi(imp.getRoi());
imp.setRoi(180, 140, 30, 40);
rm.addRoi(imp.getRoi());
rm.runCommand("Deselect"); # deselect ROIs to save them all
rm.runCommand("Save", IJ.getDirectory("home") + "RoiSet.zip");
imp.show();

希望有所帮助。