matlab 从一个文件夹中批量读取、处理并保存图片文件到另外一个文件夹

在遇到大型的项目工程,成百上千张图片一张一张进行读取也是非常不可行的[1]。因此,实现“从一个文件夹中批量读取、处理并保存图片文件到另外一个文件夹”的功能是非常必要的。之前我们用C++实现过"批量提取文件夹中文件名"功能 [2],本文用matlab实现"从一个文件夹中批量读取、处理并保存图片文件到另外一个文件夹"的功能。.m文件代码实现如下:

%matlab 从一个文件夹中批量读取、处理并保存图片文件到另外一个文件夹
%测试平台:windows 10, matlab 2010R 64b
%编写日期:20180717
%zhouxianen

clear;
clc;
close all;

srcFace = 'D:\face\facePN1\posdata';%被读取文件的存放目录(根据自己需要更改设置)
fileSavePath='D:\face\facePN1\posdataResize';%文件保存目录(根据自己需要更改设置)
src=srcFace;
srcsuffix='.jpg';%被读取的文件名后缀(根据被读取文件的实际文件类型设置)
srcsuffixSave='.png';%保存文件名后缀(根据自己需要更改设置)
files = dir(fullfile(src, strcat('*', srcsuffix)));
doDispOrSave = true ;% 是否显示或保存图像;可以设置为:true 或者 false
for file_i= 1 : length(files)
    disp(file_i);%显示当前处理的文件序号
    srcName = files(file_i).name;
    noSuffixName = srcName(1:end-4);
    srcName1=files(file_i).name;
    pathImgName=sprintf('%s%s%s',src,'\',srcName1);
    imgSrc=imread(pathImgName);%读入图像
    %对读入的图像进行尺度缩放处理
    imgResize=imresize(imgSrc,0.95);
    %显示或者保存图像
    if(doDispOrSave==true)%显示原始图像和处理后的图像
        close all;
        figure('Name','imgSrc-imgResize');
        subplot(2,1,1); imshow(imgSrc);
        subplot(2,1,2); imshow(imgResize);
    else%保存处理后的文件
        savePathName=sprintf('%s%s%s%s',fileSavePath,'\',noSuffixName,srcsuffixSave);
        imwrite(imgResize,savePathName);
    end
end

参考资料:

[1] https://blog.csdn.net/misayaaaaa/article/details/71157743 ,matlab 批量读取文件夹中的图片、处理后、保存于另一文件夹

[2] https://blog.csdn.net/zhouxianen1987/article/details/78656835 ,批量提取文件夹中文件名(C++代码实现)

  

猜你喜欢

转载自blog.csdn.net/zhouxianen1987/article/details/81076669