MATLAB中批处理图像的格式转换

MATLAB中批处理图像的格式转换,matlab,for-loop,Matlab,For Loop,对于从jpg到bmp的批处理图像转换,我使用了以下代码,但它面临一些错误: f=dir('./input') fil={f.name}; for k=1:numel(fil) file=fil{k}; new_file=strrep(file,'.jpg','.bmp'); im=imread(file); imwrite(im,new_file); end 错误: 使用imread>get_full_文件名行513时出错 无法打开文件。用于阅读。您可能没有阅读权限 imread第340行出错

对于从jpg到bmp的批处理图像转换,我使用了以下代码,但它面临一些错误:

f=dir('./input')
fil={f.name};
for k=1:numel(fil)
file=fil{k};
new_file=strrep(file,'.jpg','.bmp');
im=imread(file);
imwrite(im,new_file);
end
错误:

使用imread>get_full_文件名行513时出错

无法打开文件。用于阅读。您可能没有阅读权限

imread第340行出错

fullname=get\u full\u filename文件名

格式转换第6行出错

im=imreadfile

问题出在哪里?

你的问题就是问题所在。和文件夹中的条目,Daniel正确地指出了注释中的解决方案

但是,由于您使用

new_file=strrep(file,'.jpg','.bmp');
在代码中,您似乎只想转换扩展名为.jpg的文件,而不是.jpeg或.jpg或.jpeg。如果目录中有.txt文件或其他文件,上述代码也会遇到问题。幸运的是,MATLAB的dir函数允许使用通配符,因此解决方案可能非常简单:

f=dir('./input/*.jpg')
当然,稍后您必须再次添加文件夹:

im=imread(fullfile('input', file));
imwrite(im,fullfile('input',new_file));
比使用固定“输入”更灵活的方法是使用f文件夹,请参见。

您的问题在于。和文件夹中的条目,Daniel正确地指出了注释中的解决方案

但是,由于您使用

new_file=strrep(file,'.jpg','.bmp');
在代码中,您似乎只想转换扩展名为.jpg的文件,而不是.jpeg或.jpg或.jpeg。如果目录中有.txt文件或其他文件,上述代码也会遇到问题。幸运的是,MATLAB的dir函数允许使用通配符,因此解决方案可能非常简单:

f=dir('./input/*.jpg')
当然,稍后您必须再次添加文件夹:

im=imread(fullfile('input', file));
imwrite(im,fullfile('input',new_file));

比使用固定“输入”更灵活的方法是使用f文件夹,请参见。

。和导致问题的原因,解释如下:@Daniel,即使我使用f=dir'E:\input';,问题仍然存在;。而且,我试着把它去掉。或“但它仍然不起作用。”比克,是的,是真的。和导致问题的原因,解释如下:@Daniel,即使我使用f=dir'E:\input';,问题仍然存在;。而且,我试着把它去掉。或但它仍然不起作用。@bicker,是的,是真的。谢谢你的回答,但不幸的是,出现了以下错误:使用imread>get_full_filename行516 File 1.jpg时出错。imread第340行fullname=get_full_filename文件名出错;格式转换第6行im=imreadfile中出错;//但我的文件夹中有1.jpg。感谢您提供了完美的解决方案。感谢您的回答,但不幸的是,出现了以下错误:错误使用imread>get_full_filename行516 File 1.jpg不存在。imread第340行fullname=get_full_filename文件名出错;格式转换第6行im=imreadfile中出错;//但是我的文件夹里有1.jpg。谢谢你的完美解决方案。