matlab - Read images from sub folders and save into another folder -


i have code here.

start_path = fullfile(matlabroot, '\toolbox\images\imdemos'); % ask user confirm or change. toplevelfolder = uigetdir(start_path); if toplevelfolder == 0     return; end % list of subfolders. allsubfolders = genpath(toplevelfolder); % parse cell array. remain = allsubfolders; listoffoldernames = {}; while true     [singlesubfolder, remain] = strtok(remain, ';');     if isempty(singlesubfolder)         break;     end     listoffoldernames = [listoffoldernames singlesubfolder]; end numberoffolders = length(listoffoldernames)  % process image files in folders. k = 1 : numberoffolders     % folder , print out.     thisfolder = listoffoldernames{k};     fprintf('processing folder %s\n', thisfolder);      % png files.     filepattern = sprintf('%s/*.png', thisfolder);     basefilenames = dir(filepattern);     % add on tif files.     filepattern = sprintf('%s/*.tif', thisfolder);     basefilenames = [basefilenames; dir(filepattern)];     % add on jpg files.     filepattern = sprintf('%s/*.jpg', thisfolder);     basefilenames = [basefilenames; dir(filepattern)];     numberofimagefiles = length(basefilenames);     % have list of files in folder.      if numberofimagefiles >= 1         % go through image files.         f = 1 : numberofimagefiles             fullfilename = fullfile(thisfolder, basefilenames(f).name);   pathname = strcat('c:\\xampp\\htdocs\\pacs_client\\cbir_matlab\\ano\\');   outputbasefilename = sprintf('%3.3d.jpg',f);   outputfullfilename = fullfile(pathname, outputbasefilename);     fprintf('processing image file %s\n', fullfilename);   im=imread(fullfilename);   imshow(im);   data = im;   imwrite(data,[pathname,outputbasefilename]);         end     else         fprintf('     folder %s has no image files in it.\n', thisfolder);     end end 

i tried save images sub folders folder.but not images.only few numbers of images saved.i want save images.can me code?

i updated code bit please check if works you. 1 issue being base file name '%3.3d.jpg' every picture '.jpg' if not. loading , showing images, need copy them, can go copyfile. 3rd setting every image 001.jpg overwrite the last 001.jpg previous folder. have add number next folder starts higher numbers.

start_path = fullfile(matlabroot, '\toolbox\images\imdemos'); % ask user confirm or change. toplevelfolder = uigetdir(start_path); if toplevelfolder == 0     return; end %dir should go. if destination not %toplevelfolder  %destinationpath = strcat('d:\\pics\\'); destinationpath = toplevelfolder;  % list of subfolders. allsubfolders = genpath(toplevelfolder); % parse cell array. remain = allsubfolders; listoffoldernames = {}; %while true %    [singlesubfolder, remain] = strtok(remain, ';'); %    if isempty(singlesubfolder) %        break; %    end %    listoffoldernames = [listoffoldernames singlesubfolder]; %end %your while worked fine, try avoid 'while true' break i=1:sum(strfind(allsubfolders,';')) [singlesubfolder, remain] = strtok(remain, ';'); listoffoldernames = [listoffoldernames singlesubfolder]; end numberoffolders = length(listoffoldernames)  %set inital count picturecount=0; % process image files in folders. k = 1 : numberoffolders     % folder , print out.     thisfolder = listoffoldernames{k};     fprintf('processing folder %s\n', thisfolder);      % png files.     filepattern = sprintf('%s/*.png', thisfolder);     basefilenames = dir(filepattern);     % add on tif files.     filepattern = sprintf('%s/*.tif', thisfolder);     basefilenames = [basefilenames; dir(filepattern)];     % add on jpg files.     filepattern = sprintf('%s/*.jpg', thisfolder);     basefilenames = [basefilenames; dir(filepattern)];     numberofimagefiles = length(basefilenames);     % have list of files in folder.      if numberofimagefiles >= 1         % go through image files.         f = 1 : numberofimagefiles               fullfilename = fullfile(thisfolder, basefilenames(f).name);               [~,~,ext] = fileparts(basefilenames(f).name); %get extension               outputbasefilename = sprintf(['%3.3d' ext],f+picturecount);%create name based on picturecount               outputfullfilename = fullfile(destinationpath, outputbasefilename);                 %fprintf('processing image file %s\n', fullfilename);               %im=imread(fullfilename);               %imshow(im);               %data = im;               %imwrite(data,[pathname,outputbasefilename]);               %you dont need in matlab copy file               copyfile(fullfilename,outputfullfilename);         end         picturecount=picturecount+numberofimagefiles;%set picturecount next k     else         fprintf('     folder %s has no image files in it.\n', thisfolder);     end end 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -