0

我的 Jython-Fiji 插件有问题:

IJ.run("Set Measurements...", "area centroid perimeter shape feret's area_fraction     redirect=None decimal=6")
IJ.run("Analyze Particles...")
rt = ResultsTable.getResultsTable()

for roi in RoiManager.getInstance().getRoisAsArray():
  a = rt.getValue("Feret", row)
  b = rt.getValue("MinFeret", row)
  nu= 1
  L = 1
  p = 1
  row = row + 1
  s = (math.pi/4) * (1/(nu*L)) * math.pow(a, 3) * math.pow(b, 3) / (math.pow(a, 2) + math.pow(a, 2))*p
  rt.addValue("S", s)
rt.show("Results") 

通常,这应该在我的意见中添加一个新列(名为 S),其中包含 s 的值。不幸的是,只有最后一个 s 值显示在该列中,而该列的所有其他行都用 0 填充。我确实错过了一些东西,但目前我不知道是什么。提前谢谢你!

4

1 回答 1

1

为了使您的代码运行,我必须在开头添加import math和。row=0

然后我用添加当前行参数替换了ResultsTable.addValue()函数调用。ResultsTable.setValue()有关详细信息,请参阅API 文档

import math
IJ.run("Set Measurements...", "area centroid perimeter shape feret's area_fraction     redirect=None decimal=6")
IJ.run("Analyze Particles...")
rt = ResultsTable.getResultsTable()
row=0
for roi in RoiManager.getInstance().getRoisAsArray():
  a = rt.getValue("Feret", row)
  b = rt.getValue("MinFeret", row)
  nu= 1
  L = 1
  p = 1
  s = (math.pi/4) * (1/(nu*L)) * math.pow(a, 3) * math.pow(b, 3) / (math.pow(a, 2) + math.pow(a, 2))*p
  rt.setValue("S", row, s)
  row = row + 1
rt.show("Results")

希望有帮助。

于 2013-10-07T12:36:05.783 回答