OrientationJ:OrientationJ Vector Field宏运行结果无法保存问题求助
问题原因&修正方案
- 你代码里的第一个问题是重复调用了两次
OrientationJ Vector Field:第一次无参数的调用会触发交互弹窗,你手动关闭弹窗后第二次带参数的调用不会正常生成矢量场结果表,直接删除第一次无参数的调用即可。 - 第二个问题是没有主动选中结果表窗口:ImageJ的
saveAs命令默认作用于当前激活的窗口,插件生成的Results表不会自动成为激活窗口,需要手动选中再执行保存。 - 第三个问题是没有清空历史结果:如果处理多张图像,结果表会累加之前所有图像的计算数据,每次处理完成后要清空或关闭结果表避免数据污染。
修正后可运行的宏代码
dir1 = getDirectory("Choose Source Directory "); dir2 = getDirectory("Choose Destination Directory "); list = getFileList(dir1); setBatchMode(true); for (i=0; i<list.length; i++) { showProgress(i+1, list.length); filename = dir1 + list[i]; if (endsWith(filename, "tif")) { open(filename); run("8-bit"); // 删掉了重复的无参数调用,直接用带参数的命令完成计算,不会弹出交互框 run("OrientationJ Vector Field", "tensor=2.0 gradient=0 radian=on vectorgrid=50 vectorscale=80.0 vectortype=0 vectoroverlay=off vectortable=on "); // 选中结果表窗口 selectWindow("Results"); // 可选:如果不需要.tif.csv的后缀,用下面这句生成纯csv文件名 // saveName = dir2 + File.nameWithoutExtension(list[i]) + ".csv"; saveAs("Results", dir2 + list[i] + ".csv"); // 清空结果表,关闭当前图像和结果表 run("Clear Results"); close("Results"); close(); } }
内容的提问来源于stack exchange,提问作者Charlie M.
相关产品推荐
相关产品推荐

