⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getfilelist.m

📁 Video IO toolbox for matlab. 用directshow做的
💻 M
字号:
function [dirname,filenames] = getFileList(filepattern)
%[dirname,filenames] = getFileList(filepattern)
%  Given a file pattern, splits out the directory name (if present)
%  and a sorted list of all files fitting that pattern.  Think of
%  this function as a specialized DIR function.
% 
%  filepattern may use wildcards, e.g. 'mydir/*.png', or it may use
%  an sprintf-like '%d' string, e.g. 'mydir/%04d.png'.  The wildcard
%  or sprintf substitution must be in the filename, not in a directory
%  name (e.g. neither 'mydir/%04d/pic.png' nor 'mydir/*/pic.png' is
%  allowed).
%
%  For sprintf strings, we assume that the substituted number is the
%  frame number.  Currently, only non-negative numbers are supported.
%  Only frames that are found when the open command is executed can 
%  be read.
%
%  For wildcard strings, all files matching the pattern are examined
%  and they are sorted in alphabetic order.  The alphabetically-first
%  frame is used as frame 0.  Only frames that are found when the
%  open command is executed can be read.
%
%  Both the percent character (%) and wildcards (?,*) cannot appear 
%  in the same file pattern at the present time (e.g. 
%  'mydir/*/%04d.png' is not allowed).  The percent character may
%  appear at most once (e.g. 'mydir/%04d_%04d.png' is not allowed). 
%
%  TODO: actually prevent substitutions in the directory portion (or change
%        the docs)

pctLoc = find(filepattern == '%');
if length(pctLoc) > 1
  error('Only one sprintf substitution is allowed right now');
elseif length(pctLoc) == 1
  wildcardPathname = '';
  for i=pctLoc+1:length(filepattern)
    if (filepattern(i)>='0') && (filepattern(i)<='9')
      % do nothing
    elseif filepattern(i)=='d'
      wildcardPathname = [filepattern(1:pctLoc-1) '*' filepattern(i+1:end)];
      break;
    else
      error('Only integer (%%d-style) substititions are permitted'); 
    end
  end
else
  % wildcard style--do nothing special here
end

parts = split('/', strrep(filepattern, '\', '/'));
dirname = filepattern(1:end-length(parts{end})-1);
filepatt = filepattern(end-length(parts{end})+1:end);

if isempty(pctLoc)
  % wildcard style
  d = dir(filepattern);
  filenames = sort({d.name});
else
  d = dir(wildcardPathname);
  filenames = {};
  for ii=1:length(d)
    frameNum = sscanf(d(ii).name, filepatt);
    if ~isempty(frameNum)
      filenames{frameNum+1} = d(ii).name;
    end
  end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -