欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何使用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'),获取帮助信息:
如何使用matlab批量导入图片
需要说明的是,dir函数中的自变量为 ‘*.jpg’ 时,意思是列出所有后缀为 .jpg 的文件。
如何使用matlab批量导入图片

fullfile函数

控制台中输入help('fullfile'),得到以下信息:
如何使用matlab批量导入图片
该函数的目的是将路径与文件名连接。

isempty函数

在控制台中输入help('isempty')得到以下信息:
如何使用matlab批量导入图片

save函数

在控制台中输入help('save'),得到以下信息:
如何使用matlab批量导入图片
值得说明的是,本程序中使用了‘-append’参数,这是为了在保存某个变量的时候不覆盖之前的变量,当使用‘-append’参数时必须保证保存的目标文件存在且不为空,否则程序会报错。

eval函数

在控制台中键入help('eval')得到以下信息:
如何使用matlab批量导入图片
帮助信息里有些抽象,这里解释一下:
其实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文件,即可加载导入好的图像数据,如下图:
如何使用matlab批量导入图片
执行imshow(Image1)即可显示图片,如下图:
如何使用matlab批量导入图片

使用资源说明:

数据集来源:

链接: https://www.yanxishe.com/postDetail/18396.