如何使用原始名称和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
答案 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来编写图像,请在使用'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