RGB到灰色转换文件夹中的所有图像,将它们保存到具有原始名称的其他文件夹

时间:2016-08-07 13:35:14

标签: matlab converter octave rgb grayscale

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

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文件夹中,并使用相同的原始名称。

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好 我希望你需要将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
    
  3. 如果要打开文件夹选择对话框,可以使用以下示例:

    %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