2016-08-07 83 views
0

Ich habe diesen Code, das Bild konvertiert grau und speichert sie im aktuellen Ordner:RGB Umwandlung aller Bild in einem Ordner grau, sie in anderen Ordnern mit Originalnamen speichern

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

Ich brauche zu konvertieren ein Ordner (Bilder) von RGB nach Grau und speichern Sie sie in Ordner mit den gleichen ursprünglichen Namen.

Antwort

0

Ihr Code sieht gut aus.
Ich hoffe, Sie RGB Gary konvertieren müssen, und nicht Gary GRB ...

  1. Ändern directory = dir('AM01AFS.jpg'); zu directory = dir('*.jpg');
  2. neue Ausgabeverzeichnis erstellen, wenn Sie vorhandene Bilder nicht außer Kraft zu setzen gewohnt.

    %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 
    

Wenn Sie Ordnerauswahl-Dialogfeld öffnen, können Sie das folgende Beispiel verwenden können:

%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 
+0

Dank @Rotem, aber wo ich kann Verzeichnis Ordner abgelegt Eingang? – Qussai

+0

Sie haben Recht, ich nahm an, dass jpg Bilder im selben Verzeichnis wie die Matlab m Datei sind. (Ich habe den Code so geändert, dass er "indir" enthält). Ich korrigierte auch einen kleinen Fehler. – Rotem

+0

Dank @Rotem, das ist genau das, was ich wirklich brauche. – Qussai