Import or Export a Sequence of Files

4 views (last 30 days)
I have been trying to export photos on MATLAB. With a.bmp, b.bmp and c.bmp works perfectly, but wrting *.bmp gives me an error. Could you help me out please.
Thanks
clc; clear all;
% paths = fullfile('c:\','users','fenec','Desktop','Cam_1',{'a.bmp'; 'b.bmp'; 'c.bmp'});
paths = dir(fullfile('c:\','users','fenec','Desktop','Cam_1','*.bmp'));
for R = 1:length(paths)
temp = char(paths(R));
I = imread(temp);
figure;
imshow(I, []);
end
  2 Comments
Stephen23
Stephen23 on 27 Feb 2021
I don't see how this approach would ever work without error:
S = dir();
char(S(1))
Error using char
Conversion to char from struct is not possible.
Most likely you would be much better off just using the standard approach of using indexing and fieldname to access the structure content (just as they were designed for):
Luca Fenech
Luca Fenech on 27 Feb 2021
Thats why I got confused. Since when uncommenting the 2nd line:
clc; clear all;
paths = fullfile('c:\','users','fenec','Desktop','Cam_1',{'a.bmp'; 'b.bmp'; 'c.bmp'});
% paths = dir(fullfile('c:\','users','fenec','Desktop','Cam_1','*.bmp'));
for R = 1:length(paths)
temp = char(paths(R));
I = imread(temp);
figure;
imshow(I, []);
end
Like the above code works perfectly.
The problem when came when I wanted to be more generic, by having
'*.bmp'
Thanks for link provided.
Moreover, the answer and explanation to this query can be found here:
https://www.mathworks.com/matlabcentral/answers/757974-import-or-export-a-sequence-of-files#answer_635024

Sign in to comment.

Accepted Answer

Cris LaPierre
Cris LaPierre on 27 Feb 2021
Perhaps the issue is that paths is a structure containing several fields and not just the path. Look at the dir documentation page for more.
The fields are
  • name
  • folder
  • date
  • bytes
  • isdir
  • datenum
See explanations here.
Perhaps modify your code to be
for R = 1:length(paths)
temp = fullfile(paths(R).folder,paths(R).name);
I = imread(temp);
figure;
imshow(I, []);
end
  4 Comments
Stephen23
Stephen23 on 18 Mar 2021
Edited: Stephen23 on 18 Mar 2021
@Luca Fenech: download, unzip, and use NATSORTFILES (following its documentation of course):
For example:
P = fullfile('C:\','users','fenec','Desktop','Cam 1');
S = dir(fullfile(P,'*.bmp'));
C = natsortfiles({S.name}); % sort filenames alphanumerically.
for k = 1:numel(C)
F = fullfile(P,C{k});
I = imread(F);
figure;
imshow(I,[]);
end
You can also sort the structure S by using the second output from NATOSRTFILES, which is the sort index.
Luca Fenech
Luca Fenech on 18 Mar 2021
@Stephen Cobeldick... this worked perfectly.
I really appreciate for your help. Thanks a lot.

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!