微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我是 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,modifiers);
    Roi.move(x0+x1-x,y0+y1-y);
  }
  roiManager("select",indexes);
  roiManager("translate",x1-x,y1-y);
}

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

但是,当我运行宏时,出现以下错误

enter image description here

我在 ImageJ forum 网上看到这个宏对其他人有效。我已经做了一些调试并且知道我收到错误是因为当我运行宏时代码没有进入 while 循环,所以 x1 没有返回 getCursorLoc 的值功能

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

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?