Batch process and name/save images in a separate folder
3 views (last 30 days)
Show older comments
Russell Chow
on 19 Mar 2021
Answered: Drishan Poovaya
on 22 Mar 2021
Hello!
I am running a script to create masks of 41 Controls, both Positive and Negative, for a total of 82 images. I don't know how to save the masks with names similar to the original .png files, such as "Masked Control_1 Positive", "Masked Control_1 Negative", etc to Control_41. I also don't know how to save these to a separate folder within my current folder. Thank you!
I have also included a screenshot of the current directory.
% GlassBrains_Controls2Mask.m
clear;
Files = dir('Control_*');
Controls_Results_Structure = struct('BW',[],'maskedRGBImage',[]);
for i = 1:length(Files)
RGB = imread(Files(i).name);
[Output_BW, Output_maskedRGBImage] = GlassBrainMask(RGB);
Controls_Results_Structure(i).BW = Output_BW;
Controls_Results_Structure(i).maskedRGBImage = Output_maskedRGBImage;
end
save("Controls_Results_Structure")
% Save the results
mkdir "Masked Glass Brains (Controls)"
for i = 1:length(Files)
Image_Number = i;
save(Controls_Results_Structure(Image_Number).BW);
end
0 Comments
Accepted Answer
Drishan Poovaya
on 22 Mar 2021
I understand you want to save your final images in a separate folder in the current folder with names similar to the original PNG files. You can do so by combining both the for loops, using split and concatenation to get your output file names as intended and using imwrite to save them to your new folder
Based on your screenshot, I have assumed your code is in the same file as all your png files and that you want to create a new folder within the current folder
I am attaching your code below with these changes
clear;
Files = dir('*.png');
mkdir 'Masked Glass Brains (Controls)'
Controls_Results_Structure = struct('BW',[],'maskedRGBImage',[]);
for i = 1:length(Files)
RGB = imread(Files(i).name);
[Output_BW, Output_maskedRGBImage] = GlassBrainMask(RGB);
Controls_Results_Structure(i).BW = Output_BW;
Controls_Results_Structure(i).maskedRGBImage = Output_maskedRGBImage;
% Create file name and save to directory
name = split(Files(i).name);
filename = ['Masked ', name{1}, ' ', name{2}];
imwrite(Output_BW,['Masked Glass Brains (Controls)\',filename]);
end
save("Controls_Results_Structure")
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!