ImageJ:在 Python 脚本中使用 selectionType() 时出现 NameError
ImageJ: NameError when using selectionType() in Python script
我是 ImageJ 的新手,正在尝试使用 Python(在 ImageJ 宏编辑器中)重新创建以下宏。
s = selectionType();
if( s == -1 ) {
exit("There was no selection.");
} else if( s != 10 ) {
exit("The selection wasn't a point selection.");
} else {
getSelectionCoordinates(xPoints,yPoints);
x = xPoints[0];
y = yPoints[0];
showMessage("Got coordinates ("+x+","+y+")");
}
问题是,我不知道如何导入 selectionType() 和 getSelectionCoordinates() 内置函数。当我尝试在 Python 代码中使用它们时出现 NameError。
有什么想法吗?
谢谢,
亚历克斯
不幸的是,ImageJ 1.x 的内置宏函数不是 first-class Java 方法,因此不一定可用于其他脚本语言,例如 Python.
您可以阅读 Java 源代码以了解宏函数的作用,但在某些情况下需要一些努力才能破译。例如,getSelectionCoordinates
函数可以是 seen here.
简而言之:它调用 ImagePlus
的 getRoi()
方法,然后根据 Roi
的类型,以不同方式填充坐标。对于 Roi.LINE
类型,使用 x1d
、y1d
、x2d
和 y2d
字段。否则调用Roi
的getFloatPolygon()
方法,将ROI转为多边形类型,然后对其坐标进行遍历。
对于 selectionType
函数,只需在 ImagePlus
上调用 getRoi()
。
我是 ImageJ 的新手,正在尝试使用 Python(在 ImageJ 宏编辑器中)重新创建以下宏。
s = selectionType();
if( s == -1 ) {
exit("There was no selection.");
} else if( s != 10 ) {
exit("The selection wasn't a point selection.");
} else {
getSelectionCoordinates(xPoints,yPoints);
x = xPoints[0];
y = yPoints[0];
showMessage("Got coordinates ("+x+","+y+")");
}
问题是,我不知道如何导入 selectionType() 和 getSelectionCoordinates() 内置函数。当我尝试在 Python 代码中使用它们时出现 NameError。
有什么想法吗?
谢谢, 亚历克斯
不幸的是,ImageJ 1.x 的内置宏函数不是 first-class Java 方法,因此不一定可用于其他脚本语言,例如 Python.
您可以阅读 Java 源代码以了解宏函数的作用,但在某些情况下需要一些努力才能破译。例如,getSelectionCoordinates
函数可以是 seen here.
简而言之:它调用 ImagePlus
的 getRoi()
方法,然后根据 Roi
的类型,以不同方式填充坐标。对于 Roi.LINE
类型,使用 x1d
、y1d
、x2d
和 y2d
字段。否则调用Roi
的getFloatPolygon()
方法,将ROI转为多边形类型,然后对其坐标进行遍历。
对于 selectionType
函数,只需在 ImagePlus
上调用 getRoi()
。