How to tell MATLAB to open and save specific files in the same directory

后端 未结 1 1739
被撕碎了的回忆
被撕碎了的回忆 2020-12-12 01:34

I have to run an image processing algorithm on numerous images in a directory.

An image is saved as name_typeX.tif, so there are X different type of im

相关标签:
1条回答
  • 2020-12-12 02:17

    It sounds like you are wanting to get all files in a directory whose names match a certain format, then process them all automatically. You can do this using the function DIR to get a list of file names in the current directory, then using the function REGEXP to find file names that match a certain pattern. Here's an example:

    fileData = dir();             %# Get a structure of data for the files in the
                                  %#   current directory
    fileNames = {fileData.name};  %# Put the file names in a cell array
    index = regexp(fileNames,...                 %# Match a file name if it begins
                   '^[A-Za-z]+_type\d+\.tif$');  %#   with at least one letter,
                                                 %#   followed by `_type`, followed
                                                 %#   by at least one number, and
                                                 %#   ending with '.tif'
    inFiles = fileNames(~cellfun(@isempty,index));  %# Get the names of the matching
                                                    %#   files in a cell array
    

    Once you have a cell array of files in inFiles that matches the naming pattern you want, you can simply loop over the files and perform your processing. For example, your code might look like this:

    nFiles = numel(inFiles);    %# Get the number of input files
    for iFile = 1:nFiles        %# Loop over the input files
      inFile = inFiles{iFile};  %# Get the current input file
      inImg = imread(inFile);   %# Load the image data
      [outImg,someNumber] = process_your_image(inImg);  %# Process the image data
      outFile = [strtok(inFile,'.') ...   %# Remove the '.tif' from the input file,
                 '_' ...                  %#   append an underscore,
                 num2str(someNumber) ...  %#   append the number as a string, and
                 '.tif'];                 %#   add the `.tif` again
      imwrite(outImg,outFile);  %# Write the new image data to a file
    end
    

    The above example uses the functions NUMEL, STRTOK, NUM2STR, IMREAD, and IMWRITE.

    0 讨论(0)
提交回复
热议问题