How to use different file format in MATLAB

10 次查看(过去 30 天)
Hi there,
I was using same file format (.tif) as input while processing with my following code. However, I have got new images with other formats like jpg, bmp.
I was previously using the below line and every time I need to change the extension manually in
M = dir(fullfile(imgPath,'*.tif'));
to work with different extension.
In most cases in one folder of the file extensions are different it only works with .tif and ignore others.
Any advice will be highly appreciated.

采纳的回答

Guillaume
Guillaume 2014-10-21
Just get all the files in the directory and keep only the ones with the extensions you want. You could even get the list of all valid image extension from imformats:
%option 1:
extensions = {'bmp', 'tif', jpg'}; %define allowed extensions yourself
%option 2:
registry = imformats; %get all image type supported by matlab
extensions = [registry.ext]; %and get their extensions
allfiles = dir(fullfile(somepath, '*.*'));
isimage = arrayfun(@(f) ~f.isdir && any(strcmp(regexp(f.name, '\.(.*)$', 'tokens', 'once'), extensions')), allfiles);
imagefiles = allfiles(isimage);
for imagefile = imagefiles'
Im = imread(fullfile(somepath, imagefile.name));
...
end
  1 个评论
Siam
Siam 2014-10-21
编辑:Siam 2014-10-21
Now I can process using the second option for my images and it is working.
Thank you very much.

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2014-10-21
Try this snippet:
ImageFiles = dir([handles.imageFolder '\*.*']);
for Index = 1:length(ImageFiles)
baseFileName = ImageFiles(Index).name;
[folder, name, ext] = fileparts(baseFileName);
ext = upper(ext);
if strcmpi(name, 'contours')
continue;
end
% Allow only tif, JPG, PNG, or BMP
if strcmpi(ext, '.TIF') == 1 || strcmpi(ext, '.JPG') == 1 || strcmpi(ext, '.TIF') == 1 if strcmp(ext, '.PNG') == 1
% if strcmp(baseFileName, '.') == 0 && strcmp(baseFileName, '..') == 0 && strcmp(baseFileName, 'Thumbs.db') == 0
ListOfImageNames = [ListOfImageNames baseFileName];
end
end
  5 个评论
Image Analyst
Image Analyst 2014-10-24
You're welcome. As you figured out folder is just your directory, which you called imgPath, so it's
tiffFiles = dir(fullfile(imgPath, '*.tif'))
pngFiles = dir(fullfile(imgPath, '*.png'))
jpgFiles = dir(fullfile(imgPath, '*.jpg'))
bmpFiles = dir(fullfile(imgPath, '*.bmp'))
allImageFiles = [tiffFiles; pngFiles; jpgFiles; bmpFiles]
If you like the code, you can "Vote" for my answer.
Siam
Siam 2014-11-11
Sorry for the delay Image Analyst. This one also works. Great help. Ty.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Environment and Settings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by