ImageJ:在Python脚本中使用selectionType()时的NameError

时间:2016-10-26 00:03:55

标签: python jython imagej imagej-macro

我是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。

有什么想法吗?

谢谢, 亚历

1 个答案:

答案 0 :(得分:0)

不幸的是,ImageJ 1.x的内置宏函数不是一流的Java方法,因此不一定可以从Python等其他脚本语言中获得。

您可以阅读Java源代码以查看宏函数的功能,但在某些情况下需要花费一些精力才能解密。例如,getSelectionCoordinates函数可以是seen here

简而言之:它调用getRoi()的{​​{1}}方法,然后根据它的ImagePlus类型,以不同方式填充坐标。对于Roi类型,使用Roi.LINEx1dy1dx2d字段。否则,调用y2d getFloatPolygon()方法将ROI转换为多边形类型,然后遍历其坐标。

对于Roi功能,只需拨打selectionType上的getRoi()