如何使用matlab批量导入图片
程序员文章站
2022-05-21 09:31:19
...
思路
先对指定文件夹进行扫描,将.jpg等后缀的图片文件信息保存,再依次将每个图片数据导入,最后将每一个数据按照变量的形式保存到指定.mat文件
程序实现
下边给出matlab代码:
function import_imageDatas(image_path)
image_list=dir(fullfile(image_path,'*.jpg'));%列出path路径下所有后缀为.jpg的文件
image_num=length(image_list);%获取图片数量
if image_num==0
fprintf('未找到任何图像\n');
else
fprintf('已找到%d张图像\n',image_num);
for i=1:image_num
image_name=image_list(i).name;%获取每一张图片名称
%用eval函数可以实现将每一张图片以变量形式保存
val=strcat('Image',num2str(i));
eval([val,'=imread(fullfile(image_path,image_name));']);%导入每一张图片,注意,这里导入的是三通道彩色图像
if i==1
save('ImageDatas.mat',val);%将图片数据以.mat文件保存下来
else
save('ImageDatas.mat',val,'-append');%将图片数据以.mat文件保存下来
end
end
end
end
程序中用到的函数
dir函数
matlab控制台中输入 help('dir')
,获取帮助信息:
需要说明的是,dir函数中的自变量为 ‘*.jpg’ 时,意思是列出所有后缀为 .jpg 的文件。
fullfile函数
控制台中输入help('fullfile')
,得到以下信息:
该函数的目的是将路径与文件名连接。
isempty函数
在控制台中输入help('isempty')
得到以下信息:
save函数
在控制台中输入help('save')
,得到以下信息:
值得说明的是,本程序中使用了‘-append’参数,这是为了在保存某个变量的时候不覆盖之前的变量,当使用‘-append’参数时必须保证保存的目标文件存在且不为空,否则程序会报错。
eval函数
在控制台中键入help('eval')
得到以下信息:
帮助信息里有些抽象,这里解释一下:
其实eval('a=1')
和a=1
等价,这个函数的作用就是输入固定语句,那么问题来了,为什么我们不直接输入语句而是使用eval函数呢,在我们的程序中,就使用了eval函数:
%用eval函数可以实现将每一张图片以变量形式保存
val=strcat('Image',num2str(i));
eval([val,'=imread(strcat(image_path,image_name));']);
在我们这个例子中,eval函数可以实现将每一组图片数据单独保存在某个变量中。
程序运行结果
在控制台输入import_imageDatas('你的文件夹名称')
运行我们的程序
然后运行load('ImageDatas.mat')
或双击ImageDatas.mat文件,即可加载导入好的图像数据,如下图:
执行imshow(Image1)
即可显示图片,如下图: