在MATLAB中保存原始名称

时间:2015-09-07 03:22:20

标签: image matlab image-processing

如何使用原始名称和MATLAB中的新目录保存图像(或变量)?

我在下面写了一些代码,但我不知道如何从这一点开始:

Images = dir('C:\Users\Mehran\Desktop\Affin dic\Pubfig\dev croped\*.jpg');   
for i=1:length (Images)
    ImgName=strcat('C:\Users\Mehran\Desktop\Affin dic\Pubfig\dev croped\',Images(i).name);
    Img=((imread(ImgName)));
    Img=imresize(Img,[100 100]);
    ???? 
end

1 个答案:

答案 0 :(得分:4)

就像使用imread读取图像一样,使用imwrite将图像文件写入磁盘。 Images包含该目录中列出的所有文件。因此,我建议您创建一个新目录,并使用您之前创建的Images存储调整大小的所有图像。

Images = dir('C:\Users\Mehran\Desktop\Affin dic\Pubfig\dev croped\*.jpg');
outDirectory = 'C:\Users\Mehran\Desktop\Affin dic\Pubfig\dev croped\resized\'; %// New - for output directory
%// New - Make directory
mkdir(outDirectory);

for i=1:length (Images)
    ImgName=strcat('C:\Users\Mehran\Desktop\Affin dic\Pubfig\dev croped\',Images(i).name);
    Img=((imread(ImgName)));
    Img=imresize(Img,[100 100]);
    imwrite(Img, strcat(outDirectory, Images(i).name)); %// Change here
end

修改上述代码,以便创建新的输出目录。具体来说,在您的dev croped目录中,我创建了一个名为resized的子目录,用于存储已调整大小的图像,然后我们循环显示每个图像,调整图像大小,然后写入使用与每个原始图像相同的名称将图像输出到输出目录。

建议 - 平台独立实施

如果您想使您的代码平台独立,最好使用fullfile来帮助您创建所需的输出目录作为拼接在一起的其他目录链:

%// New, specify base directory
baseDirectory = fullfile('C:', 'Users', 'Mehran', 'Desktop', 'Affin dic', 'Pubfig', 'dev croped');

%// Change
Images = dir(fullfile(baseDirectory, '*.jpg'));

%// New - for output directory
outDirectory = fullfile(baseDirectory, 'resized'); 

%// New - Make directory
mkdir(outDirectory);

for i=1:length (Images)
    ImgName=fullfile(baseDirectory, Images(i).name); %// Change
    Img=((imread(ImgName)));
    Img=imresize(Img,[100 100]);
    imwrite(Img, fullfile(outDirectory, Images(i).name)); %// Change here
end

这对我来说更具可读性......但同样,这是我的观点。

另一个建议 - JPEG质量

JPEG压缩是有损的,因此在图像中加载已经是JPEG格式,调整大小然后重新保存它会给你带来比它更值得的质量损失。如果您坚持使用JPEG来编写图像,请在使用'Quality'功能时将imwrite标志设置为100。这将最大限度地减少一些错误,并以较小的文件大小为代价进行较少的压缩,但考虑到今天的存储空间有多便宜,我想你不会介意:

%// New, specify base directory
baseDirectory = fullfile('C:', 'Users', 'Mehran', 'Desktop', 'Affin dic', 'Pubfig', 'dev croped');

%// Change
Images = dir(fullfile(baseDirectory, '*.jpg'));

%// New - for output directory
outDirectory = fullfile(baseDirectory, 'resized'); 

%// New - Make directory
mkdir(outDirectory);

for i=1:length (Images)
    ImgName=fullfile(baseDirectory, Images(i).name); %// Change
    Img=((imread(ImgName)));
    Img=imresize(Img,[100 100]);
    imwrite(Img, fullfile(outDirectory, Images(i).name), 'Quality', 100); %// Change here
end