如何在MATLAB中读取多张图片并存储到单元格数组?
解决MATLAB读取目录所有图片并存储到单元格数组的问题
修改后的完整代码
clear; clc; path = uigetdir(); % 选择目标目录 if isequal(path, 0) disp('用户取消了选择'); return else disp(['用户选择的目录: ', path]); end % 过滤目录中的图片文件(支持jpg、png、bmp格式,可按需添加) imageFormats = {'*.jpg', '*.png', '*.bmp'}; theFiles = []; for fmt = imageFormats theFiles = [theFiles; dir(fullfile(path, fmt{1}))]; end % 初始化存储图片的单元格数组 imageCell = cell(length(theFiles), 1); % 遍历所有图片文件,读取并存入单元格数组 for k = 1:length(theFiles) baseFileName = theFiles(k).name; fullFileName = fullfile(theFiles(k).folder, baseFileName); fprintf(1, '正在读取 %s\n', fullFileName); % 读取图片并存入单元格数组 imageCell{k} = imread(fullFileName); end % 验证:输出单元格数组的长度(即读取的图片数量) fprintf(1, '共读取 %d 张图片\n', length(imageCell));
关键修改说明
- 过滤图片文件:原代码直接用
dir(path)会获取目录下所有文件(包括.、..和非图片文件),通过指定图片格式后缀,只读取目标类型的文件,避免读取无效文件报错。 - 初始化单元格数组:提前创建对应长度的单元格数组,保证循环中可以直接赋值。
- 循环内完成读取存储:把
imread放到循环内部,每遍历一个文件就读取并存入单元格数组的对应位置,而不是循环结束后只读取最后一个文件的路径。 - 灵活支持多格式:通过
imageFormats数组可以轻松添加或删除需要支持的图片格式。
内容的提问来源于stack exchange,提问作者Polina Grushina
相关产品推荐
相关产品推荐

