2

我正在尝试将插件 bUnwarpJ 集成到我一直在编写的 ImageJ 宏中。目的是调用这个插件,允许用户定义参数并运行它。这个插件有一个选项来保存用户定义的参数,即“保存地标”。我也希望通过在我的插件中调用: call("bunwarpj.bUnwarpJ_.saveLandmarks", output folder) 来执行此操作。

目前,代码为:

run("bUnwarpJ");
call("bunwarpj.bUnwarpJ_.saveLandmarks", output folder);

问题是一旦 bUnwarpJ 完成,你就不能调用 'save landmarks' 方法,并且也会丢失用户输入的数据。你会如何解决这个问题?

一个想法是有一个弹出窗口(在运行命令之前),它不会暂停用户交互,当用户完成定义地标时,他们可以在执行 call() 的这个窗口上单击确定,从而在保存地标的同时bUnwarpJ 正在运行。我遇到的问题是大多数弹出窗口会暂停其余代码。理想情况下,它会像:

#command for popup window here
run("bUnwarpJ"); #when user is finished, they click Ok on the box above

#执行:调用(“bunwarpj.bUnwarpJ_.saveLandmarks”,输出文件夹);

任何帮助表示赞赏。谢谢!

4

2 回答 2

1

用户是否通过创建 ROI 或其他可能需要他们实际与图像交互的方式来定义地标?如果没有,和/或可以提前生成这些地标值(使用单个图像作为批处理的模板),您可以考虑只添加一个请求地标值的用户界面/对话框,然后将它们保存为变量集或数组。如果这听起来像是在正确的轨道上,请告诉我,我可以尽我所能帮助您进行设置。

于 2019-09-11T20:59:34.473 回答
0

使用初始对话框肯定是获取输入参数的最简单方法。如果由于某种原因这不起作用,您可以考虑加入如下行:

run("bUnwarpJ");
waitForUser("Input Your Parameters");

我没有使用过 UnwarpJ,但是如果用户打算执行除参数输入以外的步骤,waitForUser 命令应该允许宏暂停手动输入。否则,ejkiely 的建议将是最快的解决方案。

于 2019-09-12T12:43:19.057 回答