Matlab对文件中多个子文件夹下的图片进行批量处理

注意:
直接下拉有完整代码

如果要用Matlab来进行深度学习或者训练一下模型,对图像批量处理是少不了的,尤其是对文件的操作。
这就要用到fullfile和dir命令……
首先,fullfile命令是可以构成地址字符串的,也就是

d = fullfile('C:','Matlab','Data')

等价于d = C:\Matlab\Data
其次,就是dir命令,我觉得比较好用的几条:
1.dir ( ’ . ’ ) 列出当前目录下的所有子文件夹和子文件
2.dir ( ’ C:\Matlab ‘) 列出指定目录下的所有子文件夹和文件
3.dir( ’ *.jpg’ )列出当前目录后缀是.jpg文件的所有文件

然后,根据以上两条命令,我们就可以直接对Matlab文件中子文件下的图片进行批量操作。
我们开始需要找到图片文件的目录,path = 'C:\Desktop\ll' 然后利用dir命令导入该目录下的所有子文件sudir = dir(path) 然后,在用个for循环遍历所有子文件

for i=1:length(sudir)
    subdir = fullfile(path,sudir(i).name)

并且每次遍历某个子文件时,我们在进入该子文件中对该目录下所有的图片进行操作因此,我们还得用一个for循环进行遍历,这次是遍历所有图片

cd(subdir)%这里是进入每个子文件夹内部
    d = dir(['*.jpg'])
    for j=1:length(d)
        I = imread(d(j).name)
        I = imresize(I,[227,227])%这里我是对图片进行统一规格
        imwrite(I,d(j).name)%这里将图片修改后覆盖原来的图片

好了,我附上我的完整代码

clc
clear
clear all
path = 'C:\Desktop\ll'
sudir = dir(path)
for i=1:length(sudir)
    subdir = fullfile(path,sudir(i).name)
    cd(subdir)
    d = dir(['*.jpg'])
    for j=1:length(d)
        I = imread(d(j).name)
        I = imresize(I,[32,32])
        imwrite(I,d(j).name)
    end
end
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用以下步骤实现: 1. 使用 `dir` 函数获取文件夹所有文件夹的路径,存储在一个结构体数组。 2. 对于每个文件夹,使用 `dir` 函数获取其所有图片文件的路径,存储在另一个结构体数组。 3. 遍历所有图片文件,读取图片并重命名,然后保存到新的文件夹。 下面是示例代码: ```matlab % 原文件夹路径和新文件夹路径 src_folder = 'path/to/source/folder'; dst_folder = 'path/to/destination/folder'; % 获取所有文件夹路径 sub_folders = dir(src_folder); sub_folders = sub_folders(3:end); % 去除 '.' 和 '..' 两个目录 % 遍历每个文件夹 for i = 1:length(sub_folders) sub_folder_path = fullfile(src_folder, sub_folders(i).name); % 获取文件夹所有图片文件路径 img_files = dir(fullfile(sub_folder_path, '*.jpg')); % 修改为你需要的图片格式 % 遍历每个图片文件,读取图片并重命名保存到新文件夹 for j = 1:length(img_files) img_path = fullfile(sub_folder_path, img_files(j).name); img = imread(img_path); [~, name, ext] = fileparts(img_files(j).name); new_name = sprintf('%s_%d%s', sub_folders(i).name, j, ext); imwrite(img, fullfile(dst_folder, new_name)); end end ``` 以上代码假设原文件夹包含多个文件夹,每个文件夹包含多个 JPG 格式的图片文件。代码遍历每个文件夹,然后遍历其图片文件,读取图片并重命名保存到新的文件夹。新的文件名以文件夹名和图片文件夹的顺序编号组成,例如 `subfolder1_1.jpg`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值