批量修改图片的尺寸,MATLAB操作,上手简单,保证能用

本文介绍如何使用MATLAB的imresize函数,对指定文件夹及其所有子文件夹中的图像进行尺寸调整,将其统一为256x256,并记录整个过程的时间。通过逐个文件夹和图片遍历,实现高效且易于上手的操作。
摘要由CSDN通过智能技术生成

把某文件夹下(可以下设数个子文件夹)一些大小不一的图像修改为统一的尺寸,然后保存到指定的新文件夹,记录整个程序跑完的时间,matlab操作,上手简单,保证一学就会

对文件夹下的图片做统一操作的循环,借鉴了这个大哥分享的内容
深度学习-MATLAB数据增广

利用了matlab中的imresize函数修改图片,是看了这个大哥的内容受到启发
图片尺寸批量resize的matlab并行代码

1. MATLAB中实现单张图片尺寸变换的函数

imresize函数用于对图像做缩放处理,调用格式:

B = imresize(A, scale)
返回的图像B的长宽是图像A的长宽的scale倍,即缩放图像。 scale大于1, 则放大图像; scale小于1, 缩小图像。

B = imresize(A, [numrows numcols])
numrows和numcols分别指定目标图像的高度和宽度,
可以用method参数指定在改变图像尺寸时所使用的算法
在这里插入图片描述
更详细说明可以看看这个matlab中imresize

2. MATLAB实现的代码

核心是imresize的应用

% 统一修改多个图像的尺寸
clear;clc;close all;

tic;            % 用于计算程序运行时间,和toc搭配使用

NEWfile_path = 'C:\Users\HS\Desktop\尺寸规整\尺度规整结果'; % 存放结果
p=genpath('C:\Users\HS\Desktop\尺寸规整\规整前');%获取指定文件夹下所有子文件的路径
%这些路径存在于字符串p中,以';'分割

length_p=size(p,2);%字符串p的长度
path={};%建立一个元胞数组,数组的每个单元中包含一个目录
temp=[];
for i=1:length_p %寻找分隔符';',一旦找到,则将路径temp写入path数组中
    if p(i)~=';'
        temp=[temp p(i)];
        else
        temp=[temp '\'];%在路径的后面加上\
        path=[path;temp];
        temp=[];
    end
end
clear p length_p temp
%获得了指定文件夹及其所有子文件夹,接下来就是逐一文件夹读取图像,利用上面的path数组,将路径取出来
file_num=size(path,1);%获取子文件夹的个数


for i=1:file_num
    file_path = path{i};
    img_path_list=dir(strcat(file_path,'*.jpg')); %获取每个文件夹下的图像列表
    img_num=length(img_path_list);%获取文件夹下图像的数量
    if img_num > 0
        for j=1:img_num
            image_name=img_path_list(j).name;%获取图像名
            new_image_name = image_name(1:end-4);%去掉原图名中的.jpg
            
            % 正式操作
            image=imread(strcat(file_path,image_name));%读取文件夹下的每一帧图像
            fprintf('第%d个文件夹中第%d个图片 %s\n',i,j,strcat(file_path,image_name));%显示正在读取的文件夹和其中图像数量
            NEWimage = imresize(image,[256 256]);      % resize为256x256
            
           
            filename = strcat(new_image_name,'-re.jpg');% 修改文件名
            %im_pathfile=fullfile(file_path,filename);% 保存到原文件夹下
            NEWim_pathfile=fullfile(NEWfile_path,filename);% 保存到新的文件夹下
            
            imwrite(NEWimage,NEWim_pathfile);
             
            
        end
    end
end

toc; % 计时结束了
fprintf(['用时=',num2str(toc)]);

3. 效果展示

保证能上手,轻松解决尺寸规整问题
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值