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.

简而言之:它调用 ImagePlusgetRoi() 方法,然后根据 Roi 的类型,以不同方式填充坐标。对于 Roi.LINE 类型,使用 x1dy1dx2dy2d 字段。否则调用RoigetFloatPolygon()方法,将ROI转为多边形类型,然后对其坐标进行遍历。

对于 selectionType 函数,只需在 ImagePlus 上调用 getRoi()