【问题标题】:RGB to gray conversion of all image in a folder, save them to other folder with original names将文件夹中的所有图像进行RGB到灰度转换,将它们保存到具有原始名称的其他文件夹中
【发布时间】:2016-08-08 14:07:24
【问题描述】:

我有这段代码可以将图像转换为灰色并将其保存在当前文件夹中:

directory = dir('AM01AFS.jpg');
for i = 1 : size(directory,1)
   filename = directory(i).name;
   img = rgb2gray(imread(filename));
   imwrite(img, ['Gr_' filename]);
end

我需要将一个文件夹(图像)从 RGB 转换为灰色,并将它们保存在具有相同原始名称的 Output 文件夹中。

【问题讨论】:

    标签: matlab converter octave rgb grayscale


    【解决方案1】:

    您的代码看起来不错。
    我希望您需要将 RGB 转换为 Gary,而不是 GRB 转换为 Gary...

    1. 修改directory = dir('AM01AFS.jpg');directory = dir('*.jpg');
    2. 如果您不想覆盖现有图像,请创建新的输出目录。

      %Assume jpg images are in the same directory as the m file.
      indir = cd; %Modify the indir to location of the jpg files.
      outdir = 'Gray'; %Name or output directory.
      directory = dir([indir, '\', '*.jpg']);
      
      if ((~exist(outdir, 'dir') && length(directory) > 0))
          %Create new directory named outdir if directory not exist.
          mkdir(outdir);
      end
      
      for i = 1 : length(directory)
          filename = directory(i).name;
          rgb_img = imread([indir, '\', filename]);    
          if (ndims(rgb_img) == 3) %Make sure img is RGB (not gray).
              img = rgb2gray(rgb_img);
              %Save gray image to outdir (keep original name).
              imwrite(img, [outdir, '\', filename]);
          end
      end
      

    如果你喜欢打开文件夹选择对话框,可以使用下面的例子:

    %Open folder selection dialog box, for selecting input and output folders.
    indir = uigetdir(cd, 'Select input folder');
    outdir = uigetdir(cd, 'Select output folder');
    directory = dir([indir, '\', '*.jpg']);
    
    for i = 1 : length(directory)
        filename = directory(i).name;
        rgb_img = imread([indir, '\', filename]);    
        if (ndims(rgb_img) == 3) %Make sure img is RGB (not gray).
            img = rgb2gray(rgb_img);
            %Save gray image to outdir (keep original name).
            imwrite(img, [outdir, '\', filename]);
        end
    end
    

    【讨论】:

    • 谢谢@Rotem,但是我可以把输入目录文件夹放在哪里?
    • 你是对的,我假设 jpg 图像与 Matlab m 文件位于同一目录中。 (我修改了代码以包含indir)。我还纠正了一个小错误。
    • 谢谢@Rotem,这正是我真正需要的。
    • 你应该使用fullfile来创建一个文件名,在Unixes上使用/,在windoze中使用\
    • 我认为 Windows 同时接受 / 和 \,我使用 \ 是出于坏习惯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2019-01-24
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多