MATLAB批量读取路径下图像

MATLAB批量读取路径下图像

每次需要批量读取图片时,都要根据文件命名设计for循环实现,有时图片命名还没有规则就很难受。所以分享一种能自动读取路径下指定类型图像的函数。

by HPC_ZY

核心函数

话不多说直接上函数(欢迎复制,若有bug请评论留言告诉我)

function varargout = filesread(varargin)

narginchk(0,2)

filetypes = {'*.jpg';'*.png';'*.jpeg';'*.bmp';'*.dcm'};

if nargin<1
 [~,filefolder,typeidx] = uigetfile(filetypes,'选择文件');     
    type = filetypes{typeidx};
else
    filefolder = varargin{1};
    filetype = ['*.',varargin{2}];
    if ~ischar(filefolder)
        error('请输入正确的文件路径');
    end
	typeidx = find(strcmp(filetype,filetypes));
    if ~isempty(typeidx)
        type = filetypes{typeidx};
    else
        error('请输入正确的文件类型,如jpg,png,jpeg,bmp,dcm');
    end  
end

files = dir([filefolder,type]);
if isempty(files)
    error('路径下不含该类型图像');
end

filesname = {files.name}';
filesnum = length(files);
if typeidx~=5 % 读取普通图片
    img = cell(filesnum,1);
for k = 1:filesnum
    img{k} = imread([filefolder,filesname{k}]);    
end
varargout{1} = img;

else % 读取DICOM影像
    dcm = cell(filesnum,1);
    dcminfo = cell(filesnum,1);
    for k = 1:filesnum
        dcm{k} = dicomread([filefolder,filesname{k}]);   
        dcminfo{k} = dicominfo([filefolder,filesname{k}]);
    end 
    varargout{1} = dcm;
    varargout{2} = dcminfo;
end

end

使用方法

选择(复制)你需要的调用方式,请勿直接运行以下代码

% 批量读取图像文件实例
% 目前仅支持jpg,png,jpeg,bmp,dcm
% 
% varargout = filesread(varargin)
% 关于输入输出见下实例
%
% 根据需要选择你的方式,请勿直接运行该文件
% 
% by HPC_ZY 20200705

clear; close all; clc

%% 实例一:读取图像(无输入)
% 不使用输入则通过弹窗手动选取的方式
im1 = filesread();

%% 实例二:读取图像(同时输入 路径+文件类型)
% 已知路径与类型可直接使用,免得每次都手动找
im2 = filesread('C:\Users\ASUS\Desktop\','jpg');

%% 实例三:读取DICOM文件(输入同一二例)
% dicom有两个输出,分别保存影像像素信息和其他信息
[dcmim,dcminfo] = filesread();

%% 其他
% 上述所有数据均保存在cell中,提取方法(使用大括号索引)如下
im = im1{2};
imshow(im)

im = im2{5};
imshow(im)

im = dcmim{15};
imshow(im)

其他

该函数只经过简单测试,若有bug请评论留言告诉我。
如果觉得好用,不妨给点个赞。

最后附上下载链接内容与文中完全一致,不推荐下载,除非开了会员。

猜你喜欢

转载自blog.csdn.net/xsz591541060/article/details/107280266