ImageJ宏在结果窗口中标记多点

时间:2013-09-02 23:00:43

标签: macros imagej

我有一个我创建的宏的轮廓,但是它希望它能做一些我无法弄清楚如何编程的简单函数。我有一系列图像,我将作为堆栈导入。对于每个图像,我将使用多点工具在每个图像中手动对不同对象进行一系列点击。宏打印结果表中点的坐标。然而,每个图像中的每个“组/系列”点(将有4-5个10+点的簇)将需要在结果表中进行不同的标记(可能通过切片??)。例如,对于每个图像,我想标记第一个点集群“1”,第二个点集群“2”等。有没有办法在结果窗口中手动标记它?在标签列中,我想保留或添加图像名称,而不是替换,但在切片列中添加此标签将是理想的。

这是我到目前为止创建的宏......

macro "Macro 2" { 
getSelectionCoordinates(xCoordinates, yCoordinates); 
for(i=0; i<lengthOf(xCoordinates); i++) { 
setResult("X", i, xCoordinates[i]); 
setResult("Y", i, yCoordinates[i]); 
} 
updateResults(); 

它有效,除了我无法弄清楚如何为每个图像和图像之间不同地标记点的不同“组/簇”。

1 个答案:

答案 0 :(得分:1)

试试这个:

var label = 1;

macro "Save to Results" { 
  row = nResults;
  getSelectionCoordinates(xCoordinates, yCoordinates); 
  for(i=0; i<lengthOf(xCoordinates); i++) { 
    setResult("X", i+row, xCoordinates[i]); 
    setResult("Y", i+row, yCoordinates[i]); 
    setResult("Label", i+row, label);
    setResult("Slice", i+row, getSliceNumber());
  } 
  updateResults();
}

macro "Increment label" {
  label++;
  showStatus("label = "+label);
}

macro "Reset Label" {
  label = 1;
  showStatus("label = "+label);
}

它使用标签的全局变量和其他宏来操作它。