将文件夹中的所有图像RGB转灰,以原名保存到其他文件夹

RGB to gray conversion of all image in a folder, save them to other folder with original names

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

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

您的代码看起来不错。
我希望您需要将 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