Macros imageJ宏以堆栈形式打开每个子文件夹,并;“做点什么”;

Macros imageJ宏以堆栈形式打开每个子文件夹,并;“做点什么”;,macros,stack,imagej,Macros,Stack,Imagej,各位, 我有一个包含多个子文件夹的文件夹,每个子文件夹包含18个tif(.tif)文件。 我想在imageJ中将每个子文件夹文件作为堆栈打开 通过一些在线宏文档, 我可以打开每个子文件夹中的文件,并执行一些操作,如将16位文件更改为8位文件 但根据我的分析需要,我需要打开每一个子floder作为一个堆栈, 我在使用宏获取堆栈时遇到一些问题 这是我目前掌握的代码 inputDir = getDirectory("choose the input directory"); outputDir =

各位,

我有一个包含多个子文件夹的文件夹,每个子文件夹包含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(); 
}
inputDir=getDirectory(“选择输入目录”);
outputDir=getDirectory(“选择输出目录”);
processDir(inputDir,outputDir);
函数processDir(inputDir,outputDir){
listdir=getFileList(inputDir);
对于(j=0;j
如果你能告诉我如何打开子文件夹作为一个堆栈


提前谢谢。

除了R之外,我对其他语言并不十分精通,所以这个答案包含了很多来自网站的“片段”。从那以后已经有几天了,我还没有复制资料来源。很多道歉

下面的宏循环遍历目录的每个子文件夹,创建一个堆栈,然后对堆栈执行“操作”,在我的例子中,使用它生成一个gif,并将其保存在子文件夹的名称下

inputDir = getDirectory('Choose Input Directory'); 
outputDir = getDirectory('Choose Output Directory'); 

listFiles(inputDir); 

list = getFileList(inputDir);

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); 

        } 
} 
inputDir=getDirectory('Choose Input Directory');
outputDir=getDirectory('Choose Output Directory');
列表文件(inputDir);
list=getFileList(inputDir);
函数列表文件(目录){
list=getFileList(dir);

对于(i=0;i我对R以外的其他语言不太精通,所以这个答案包含了很多来自网站的“片段”。从那以后已经几天了,我还没有复制源代码。非常抱歉

下面的宏循环遍历目录的每个子文件夹,创建一个堆栈,然后对堆栈执行“操作”,在我的例子中,使用它生成一个gif,并将其保存在子文件夹的名称下

inputDir = getDirectory('Choose Input Directory'); 
outputDir = getDirectory('Choose Output Directory'); 

listFiles(inputDir); 

list = getFileList(inputDir);

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); 

        } 
} 
inputDir=getDirectory('Choose Input Directory');
outputDir=getDirectory('Choose Output Directory');
列表文件(inputDir);
list=getFileList(inputDir);
函数列表文件(目录){
list=getFileList(dir);

for(i=0;i我在这里制作了一个宏,它可以在文件夹上迭代、导入图像序列并另存为图像序列。您可以在“打开”和“保存”命令之间的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();
}
inputDir=getDirectory('Choose Input Directory');
outputDir=getDirectory('Choose Output Directory');
listdir=getFileList(inputDir);
对于(i=0;i
我在这里制作了一个宏,它可以在文件夹上迭代、导入图像序列并另存为图像序列。您可以在“打开”和“保存”命令之间的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();
}
inputDir=getDirectory('Choose Input Directory');
outputDir=getDirectory('Choose Output Directory');
listdir=getFileList(inputDir);
对于(i=0;i
Hi.我想知道你是否找到了解决这个问题的方法,因为我有相同的…?谢谢!Hi,我改为:Image J--拖动打开一个包含多个子文件夹的文件夹(这一步后你将打开多个堆栈)--打开宏,添加代码,不使用“inputDir”,但要处理堆栈中的其他代码,请不要忘记在宏的edn中添加“close()”——然后单击一个堆栈,单击“run”---其他堆栈相同,请单击堆栈单击运行。我使用此方法完成了我的工作,时间不长,希望能帮助您。谢谢。找到了一种满足我要求的方法。将作为答案,尽管我不确定它是否真的对您的任务有帮助。嗨,我想知道您是否找到了解决此问题的方法,因为e我有相同的…?谢谢!嗨,我改为:图像J---拖动打开一个包含许多子文件夹的文件夹(这一步后你将打开许多堆栈)-----打开宏,添加不带“inputDir”的代码,但其他你想处理堆栈的代码,不要放弃