大家,
我有一个包含多个子文件夹的文件夹,每个子文件夹包含18个tif(.tif)文件。 我想在imageJ中将每个子文件夹文件打开为堆栈。
使用一些在线宏文档, 我可以打开每个子文件夹中的文件,并做一些事情,比如将16位文件更改为8位文件。
但是正如我的分析所要求的那样,我需要打开每个子floder作为堆栈, 我有一些问题要用宏来堆叠,
这是我目前的代码,
inputDir = getDirectory("choose the input directory");
outputDir = getDirectory("choose the output directory");
processDir(inputDir, outputDir);
function processDir(inputDir, outputDir) {
listdir = getFileList(inputDir);
for (j = 0; j < listdir.length; j++) {
print("Processing: " + listdir[j]);
File.makeDirectory(outputDir + listdir[j]);
outputFolder = outputDir + listdir[j];
inputFolder = inputDir + listdir[j];
setBatchMode(true);
processFolder(inputFolder);
setBatchMode(false);
}
}
function processFolder(inputFolder) {
list = getFileList(inputFolder);
for (i = 0; i < list.length; i++) {
processFile(inputFolder, outputFolder, list[i]);
}
}
function processFile(inputFolder, outputFolder, file) {
print("Processing: " + inputFolder + file);
open(inputFolder + file);
run("Image Sequence...", "open=[inputFolder + file] number=18 starting=1 increment=1 scale=100 file=[] or=[] sort");
run("Enhance Contrast", "saturated=0.35");
run("Apply LUT", "stack");
setAutoThreshold("Otsu dark");
setThreshold(60, 255);
run("Convert to Mask", " ");
print("Saving to: " + outputFolder);
saveAs("tiff", outputFolder+file);
close();
}
如果你能告诉我如何打开子文件夹作为堆栈。
提前谢谢。
答案 0 :(得分:0)
我对R以外的其他语言并不十分精通,所以这个答案包含很多&#34; snippetting&#34;来自网站。从那时起已经过了几天,我还没有复制这些消息来源。很多道歉。
我已经成功地整理了一个脚本,该脚本能够从给定目录中的每个子文件夹创建一个堆栈,然后执行&#34;某些事情&#34;在我的情况下,使用堆栈制作一个gif并将其保存在子文件夹的名称下。我将完全保留代码,因为它可以工作,对于想要类似事物的人来说可能会有用。(??)
dir = getDirectory("Choose directory");
listFiles(dir);
list = getFileList(dir);
function listFiles(dir) {
list = getFileList(dir);
for (i=0; i<list.length; i++) {
setBatchMode(true);
for (i=0; i<list.length; i++) {
file = dir + list[i];
open(file);
title = getTitle();
saveAs("Gif", dir+title);
close();
}
setBatchMode(false);
}
}
我认为@Duerna代码的主要区别在于嵌套for循环。希望这会有所帮助。
答案 1 :(得分:0)
我在这里创建了一个宏,该宏遍历文件夹并导入图像序列并将其另存为图像序列。您可以在open和save命令之间的for循环中详细说明您要执行的操作。希望这会有所帮助!
inputDir = getDirectory('Choose Input Directory');
outputDir = getDirectory('Choose Output Directory');
listdir = getFileList(inputDir);
for(i=0; i< listdir.length; i++) {
print("Processing: " + inputDir + listdir[i]);
File.makeDirectory(outputDir +listdir[i]);
inputFolder = inputDir + listdir[i];
outputFolder = outputDir + listdir[i];
inputFiles = getFileList(inputFolder);
inputFile = inputFolder + inputFiles[0];
run("Image Sequence...", "open=[inputFile] convert_to_rgb sort");
run("Image Sequence... ", "format=TIFF save=[outputFolder]");
close();
}
答案 2 :(得分:0)
inputDir1 = getDirectory("Choose the folder ");
inputDir2 = getDirectory("Choose where to save the image Stack ");
run("Image Sequence...", "open="+inputDir1+" sort");
filename= getTitle();
saveAs("Tiff", inputDir2+filename+".tif");
close()