首页 > 解决方案 > imageJ 上的宏,循环不会移动到下一个 ROI

问题描述

我正在尝试裁剪图像中的部分,然后对所有部分进行平均。我在 imageJ 上回收我以前的宏。以前的宏通过在 ROI 列表中执行循环来很好地工作。但是,对于这个,我不明白为什么循环不会移动到列表中的下一个 ROI。相反,我得到了 N 次作为列表中 ROI 数量的工作,但宏使用第一个 ROI 信息。这是我的宏:

runMacro("OpenROI");
rename("AA");
selectWindow("AA");
n=roiManager("count");

for(i=0;i<n;i++){
    roiManager("select",i);
    run("Copy");
    run("Internal Clipboard");
    rename(i);
}

selectWindow("AA");
run("Close");
run("Images to Stack", "name=Stack title=[] use");
run("Z Project...", "projection=[Average Intensity]");

有人能抓住我失去了什么吗?谢谢

标签: macrosimagejroi

解决方案


我找到了一个解决方案,这条线:

selectWindow("AA");

必须在循环内才能在图像上设置 ROI。完整代码如下:

runMacro("OpenROI");
rename("AA");

n=roiManager("count");

for(i=0;i <n; i++){
    selectWindow("AA");
    roiManager("select",i);
    run("Copy");
    run("Internal Clipboard");
    rename(i);
}

selectWindow("AA");
run("Close");
run("Images to Stack", "name=Stack title=[] use");
run("Z Project...", "projection=[Average Intensity]");

推荐阅读