matlab使用for循环导入不同文件夹的图片到数据集
时间: 2024-12-08 15:16:28 浏览: 6
在MATLAB中,你可以使用`dir`函数获取特定文件夹下的所有图片文件,然后通过`for`循环逐个读取并添加到数据集中。以下是基本步骤:
1. **初始化**:
首先,你需要确定你要处理的文件夹路径,以及图片文件的名称格式(例如`.jpg`, `.png`等)。假设文件夹名为`imageFolder`,图片都以`img_`开头。
```matlab
folderPath = 'imageFolder'; % 替换为你实际的文件夹路径
filePattern = 'img_*.jpg'; % 可能需要修改成你的图片文件格式
```
2. **遍历文件夹**:
使用`dir`函数列出指定路径下的文件,并筛选出图片文件。`ischar`用于判断是否是字符串类型的文件名,即图片文件。
```matlab
files = dir(fullfile(folderPath, filePattern));
imageFiles = files(ischar(files.name)); % 只保留字符串类型的文件
numImages = length(imageFiles);
```
3. **创建数据集**:
如果你还没有数据集,可以使用` imageDatastore `来创建一个。如果没有,你可以直接将图片数组存储在一个结构体数组中,比如`imageData{}`。
```matlab
if ~exist('imageData', 'var')
imageData = cell(1, numImages);
end
% 初始化数据集(如果已存在则跳过)
dataSet = imageDatastore;
```
4. **for循环导入图片**:
通过`for`循环依次读取每个图片文件,并将其添加到数据集中。
```matlab
for i = 1:numImages
fileName = fullfile(folderPath, imageFiles(i).name);
img = imread(fileName); % 读取图片
if ~isempty(img) % 检查图片是否成功加载
if iscell(imageData)
imageData{i} = img; % 存储为cell数组
else
dataSet.add(fileName, img); % 或者使用ImageDatastore追加
end
end
end
```
5. **结束操作**:
最后关闭数据集(如果使用了`imageDatastore`),并确保所有图片已经添加到数据集中。
```matlab
if strcmp(class(dataSet), ' imageDatastore ')
dataSet = DataSet; % 转换回其他数据集形式
end
```
阅读全文