Image MATLAB中的原始名称保存
如何使用原始名称将图像(或变量)保存在MATLAB的新目录中 我在下面写了一些代码,但我不知道如何从这一点出发:Image MATLAB中的原始名称保存,image,matlab,image-processing,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);
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
就像使用
imread
读取图像一样,使用将图像文件写入磁盘<代码>图像在该目录中列出了所有文件。因此,我建议您创建一个新目录,并存储所有这些使用先前创建的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
的子目录,它将存储调整大小的图像,然后我们循环浏览每个图像,调整图像大小,然后使用与每个原始图像相同的名称将图像写入输出目录
建议之词-独立于平台的实现 如果希望使代码平台独立,可以使用以下方法帮助您创建所需的输出目录,将其作为一个由其他目录拼凑而成的链:
%// 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来写入图像,请在使用imwrite
功能时将'Quality'
标志设置为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
我的荣幸。祝你好运霍达哈菲兹;)。在定义“outDirectory”时,需要使用反斜杠,新图像将写入原始文件夹,而不带“\”!outDirectory='C:\Users\Mehran\Desktop\Affin dic\Pubfig\dev croped\resized`这就是
fullfile
为您所做的,因此您不必担心这一点……在函数中的每个文件夹之间,它插入一个与您的操作系统兼容的斜杠。然而,我在第一部分犯了一个错误,我没有在那里划斜线。我现在会改正的。谢谢Sepas(感谢您的帮助):)