我正在编写一个ImageJ宏来迭代.lsm共聚焦显微镜图像的文件夹,从每个显示一个Z项目,将两个通道组合成红色和绿色,并保存为RGB图像。该代码适用于一个目录,但现在它引发的错误与getFileList
的文件名有关。
以下是代码的相关部分:
dir1 = getDirectory("Choose Source Directory ");
format = getFormat();
dir2 = getDirectory("Choose Destination Directory ");
list = getFileList(dir1);
setBatchMode(true);
for (i = 0; i < list.length; i++) {
showProgress(i+1, list.length);
open(dir1+list[i]);
run("Z Project...", "projection=[Max Intensity]");
run("Split Channels");
run("Merge Channels...", "c1=C1-MAX_" + list[i] + " c2=C2-MAX_" + list[i]);
saveAs(format, dir2 + list[i]);
close();
}
必须将"C1-MAX_"
附加到输入字符串,因为在调用Z项目和拆分频道期间,这些前缀会添加到图像名称中。
作为参考,文件的名称看起来像Negative 1 5x.lsm
,Negative 2 5x.lsm
,Positive 1 5x.lsm
等。基于这些文件名,我希望ImageJ使用字符串调用Merge Channels命令&#34; C1-MAX_Negative 1 5x.lsm&#34;和&#34; C2-MAX_Negative 1 5x.lsm&#34;。
相反,我收到错误消息&#34; C1-MAX_Negative&#34;不是&#34; C1(红色):&#34;
的有效选择我不明白为什么ImageJ试图用字符串&#34; C1-MAX_Negative&#34;来调用合并频道。而不是&#34; C1-MAX_Negative 1 5x.lsm&#34;。为什么我没有list[i]
返回我认为它应该的东西?
答案 0 :(得分:1)
可能是因为文件名中的空格。尝试将名称放在方括号中:
run("Merge Channels...", "c1=[C1-MAX_" + list[i] + "] c2=[C2-MAX_" + list[i] + "]");