【问题标题】:is there any way to switch ImageJ macro code to python3 code?有没有办法将 ImageJ 宏代码切换到 python3 代码?
【发布时间】:2022-10-01 12:15:38
【问题描述】:

我正在用 python3 制作一个应用程序,我想在 imagej 中使用一些函数。我使用宏记录器切换到 python 代码,但它变得非常混乱,现在我不知道下一步该怎么做。有人能帮助我吗。

这是宏记录器代码和我的宏代码

imp = IJ.openImage(\"D:/data/data_classify/data_train/1/9700TEST.6.tiff40737183_2.jpg\");
//IJ.setTool(\"line\");
//IJ.setTool(\"polyline\");
xpoints = [177,155,114,101,100,159,179];
ypoints = [82,94,109,121,133,163,173];
imp.setRoi(new PolygonRoi(xpoints,ypoints,Roi.POLYLINE));
IJ.run(imp, \"Straighten...\", \"title=9700TEST.6.tiff40737183_2-1.jpg line=30\");

我的python3代码

mport imagej
from scyjava import jimport
ij = imagej.init(\'2.5.0\', mode=\'interactive\')

print(ij.getVersion())

imp = ij.IJ.openImage(\"D:/data/data_classify/data_train/1/9700TEST.6.tiff40737183_2.jpg\")

xpoints = [177,155,114,101,100,159,179]
xpoints_int = ij.py.to_java(xpoints)
ypoints = [82,94,109,121,133,163,173]
ypoints_int = ij.py.to_java(xpoints)
straightener = jimport(\'ij.plugin.Straightener\')
polyRoi = jimport(\'ij.gui.PolygonRoi\')

我不知道下一步该怎么做......

    标签: python-3.x imagej pyimagej


    【解决方案1】:

    几天后,我终于找到了答案。了解要写的函数的参数很重要,我参考过: https://pyimagej.readthedocs.io/en/latest/ https://imagej.nih.gov/ij/developer/api/ij/module-summary.html 在我的示例中,我需要的下一件事是来自给定坐标的多边形。我在上面的网站上找到了 PolygonRoi 所需的系数,并决定将其作为参数PolygonRoi​(int[] xPoints, int[] yPoints, int nPoints, int type)

    接下来,我找到了一种将坐标列表转换为int[] 的方法,如 pyimagej 教程中所示。 在type部分,我可以通过尝试print(int(roi.PolygonRoi))找到它,结果是6,你也可以在上面的网站Roi部分找到原因 剩下的,你需要做的最后一件事是把 PolygonRoi 放到 Straightener 函数中,加上你想要的行值 这是我在 Python3 中使用宏 Imagej 的代码

    import imagej
    from scyjava import jimport
    from jpype import JArray, JInt
    
    ij = imagej.init('2.5.0', mode='interactive')
    
    print(ij.getVersion())
    
    imp = ij.IJ.openImage("D:/AI lab/joint_detection/data/1/9700TEST.6.tiff133328134_1.jpg")
    
    
    xpoints = [124,126,131,137,131,128,121,114]
    xpoints_int = JArray(JInt)(xpoints)
    
    ypoints = [44,63,105,128,148,172,194,206]
    ypoints_int = JArray(JInt)(ypoints)
    
    
    straightener = jimport('ij.plugin.Straightener')
    polyRoi = jimport('ij.gui.PolygonRoi')
    roi = jimport('ij.gui.Roi')
    
    
    new_polyRoi = polyRoi(xpoints_int,ypoints_int,len(xpoints), int(roi.POLYLINE))
    imp.setRoi(new_polyRoi)
    straightened_img = ij.IJ.run(imp, "Straighten...", "title=9700TEST.6.tiff40737183_2-1.jpg line=30")
    ij.IJ.saveAs(straightened_img, 'Jpeg', './test.jpg')
    

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 2019-06-30
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多