Image 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);

如何使用原始名称将图像(或变量)保存在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

就像使用
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(感谢您的帮助):)