MATLAB Answers

How to save output images after preprocessing into new folder sequentially without overwriting?

4 views (last 30 days)
Nikhat Ali
Nikhat Ali on 28 Jul 2021
Edited: Stephen on 28 Jul 2021
I am have to convert RGB images into gray scale, as there are hundreds of images in that folder. I want to processess all and save the resultant gray scale images into different folder. Can I get code for this?

Accepted Answer

KSSV on 28 Jul 2021
infolder = '' % give the path of the folder where your RGB images are present
outfolder = '' % give the path of the folder where you want to save gray images
imgFiles = dir([infolder,filesep,'\*.png']) ; % give extension of your images
N = length(imgFiles) ; % total images in the foder
for i = 1:N
thisFile = [infolder,filesep,imgFiles(i).name] ; % each image file
[filepath,name,ext] = fileparts(thisFile) ; % get name of the image file and extension
outFile = [outfolder,filesep,[name,ext]] ; % write gray image file on this name here
I = rgb2gray(imread(thisFile)) ; % reac and conver RGB image into gray
imwrite(I,outFile) ; % write the gray image in the said folder on the name
Stephen on 28 Jul 2021
Assuming that the first two filenames are '.' and '..' is buggy, anti-pattern, and not recommended.
@Nikhat Ali: Do NOT follow any poor advice advising to remove the first two filenames. Your original approach of specifying the file-extension is a much more robust approach. Or you could remove any folders using the ISDIR field:
S = dir(..);
S([S.isdir]) = [];
As Walter Roberson wrote in that last link: "In short: if your code assumes that '.' and '..' are the first two entries in a directory, your code has a bug (even in MS Windows). If your code assumes that directory entries are returned in any sorted order, your code has a bug (in all OS.)"
Unfortunately poor advice keeps getting repeated and copied by beginners.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!