在 ImageJ 中运行宏时出现未定义的变量错误

Posted

技术标签:

【中文标题】在 ImageJ 中运行宏时出现未定义的变量错误【英文标题】:Undefined variable error when running macro in ImageJ 【发布时间】:2021-08-26 17:46:06 【问题描述】:

我是 ImageJ 宏的新手,我想在斐济使用宏。宏的代码来自这个source。

macro "MultiRoiMove Tool - C00cT0f16M" 
  if (RoiManager.selected<2) exit(); 
  indexes=split(call("ij.plugin.frame.RoiManager.getIndexesAsString"));
  roiManager("Combine");
  getCursorLoc(x, y, z, modifiers);
  Roi.getBounds(x0, y0, width, height);
  while(modifiers&16>0) 
    getCursorLoc(x1, y1, z, modifiers);
    Roi.move(x0+x1-x, y0+y1-y);
  
  roiManager("select", indexes);
  roiManager("translate", x1-x, y1-y);

我已下载代码并将其保存为文本文件。然后我通过转到插件>宏>运行来运行宏。我使用的 ImageJ 版本是 1.53j。

但是,当我运行宏时,我收到以下错误:

我在 ImageJ forum 上在线看到此宏适用于其他人。我已经进行了一些调试,并且知道我收到了错误,因为当我运行宏时代码没有进入 while 循环,因此 getCursorLoc 函数返回的 x1 没有值。

但我不知道如何让代码进入 while 循环。有谁知道我是否必须在运行宏之前单击特定的东西?在我看来,当鼠标修饰符事件发生时,代码将进入 while 循环(因为 getCursorLoc 函数返回的修饰符参数是鼠标事件修饰符标志)。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

您需要在 ROI 管理器中选择要移动的 ROI。您可以单击第一个,然后 cmd + 单击(在 Mac 上)以添加其他 ROI。然后,宏将移动这些 ROI,但不会移动任何未选中的 ROI。

代码的modifiers 部分接收正在按下的鼠标按钮,如果使用左键单击 (16) 并拖动,则定义一个矩形,然后用于移动 ROI。

您应该选择插件 > 宏 > 安装以将该工具添加到工具栏。

【讨论】:

以上是关于在 ImageJ 中运行宏时出现未定义的变量错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 React 中更改状态时出现未定义的错误

多重通知:调用函数时出现未定义的变量错误[重复]

使用 node-sass 编译 SCSS 时出现未定义变量错误

运行生成脚手架命令时出现未定义的方法“组”错误

使用 sql into 时出现未声明的变量错误

尝试在 SharePoint 环境中使用 AngularJS DateRangePicker 时出现未定义错误