我有一个功能,可以拍摄多页的tiff图像,并找到每页最大像素的平均值。该函数工作正常,但它使用varargin函数需要可变数量的输入路径。
输入的格式类似于'C:\ Users \ me \ desktop \ thefolder \ theimage.tif',该函数会获取所有这些输入并给出平均值。我需要帮助自动化这个过程。
到目前为止,我刚刚手动为每个单独的图像写出路径,但随着多重tiff的数量增加,将所有内容写出来变得耗费时间......
如何编写一个能够轻松找到所有图像的函数,然后在工作区中为我提供与我可以提供给主函数的所有图像路径相对应的char变量?
答案 0 :(得分:0)
dir
函数可以使用通配符返回单个文件夹中所有匹配文件的结构数组。
E.g。
>> files = dir('C:\Users\me\desktop\thefolder\*.tif');
files =
3x1 struct array with fields:
name
date
bytes
isdir
datenum
您可以循环遍历数组的每个元素,也可以在工作区中创建单元格数组,如下所示:
>> tif_filenames = {files.name}
tif_filenames =
'theimage.tif' 'another.tif' 'and_another.tif'
但是,如果您的处理函数使用varargin,那么您可以按如下方式简单地调用它:
>> find_max_average_pixel(files.name)
并且MATLAB将每个文件名映射到varargin
中的条目,因此从函数内部看起来好像是用多个字符串调用它。
如果您希望从子文件夹树中提取文件,则需要更多考虑。