ImageJ /斐济:在结果表中进行迭代和打印

时间:2013-10-07 11:56:00

标签: python jython imagej

我的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") 

Normaly这应该在我的意见中添加一个新的列(名为S),其值为s。不幸的是,只有最后一个s值显示在列中,而此列的所有其他行都填充0.我绝对错过了一些东西,但此刻我不知道是什么。提前感谢你!

1 个答案:

答案 0 :(得分:1)

要使代码运行,我必须在开头添加import mathrow=0

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

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")

希望有所帮助。