ImageJ宏中的奇怪文件名导入行为

时间:2014-08-08 15:01:39

标签: macros imagej

我正在编写一个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.lsmNegative 2 5x.lsmPositive 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]返回我认为它应该的东西?

1 个答案:

答案 0 :(得分:1)

可能是因为文件名中的空格。尝试将名称放在方括号中:

run("Merge Channels...", "c1=[C1-MAX_" + list[i] + "] c2=[C2-MAX_" + list[i] + "]");