我有这样一个代码;
for x = 1:100
path = sprintf('C:Usershasan_000DocumentsMATLABProjectImages%d.jpg', x);
imgarray = imread(sprintf(path));
end
我有一个包含100张照片的文件夹。我想通过循环自动上传把它们转换成矩阵。
但是我得到这个错误:
无法打开文件"C:"读取;
您可能没有读权限。
我该如何解决这个问题?
谢谢,
代码应该输出警告:
"警告:转义序列'U'无效。参见'help sprintf'获取有效的转义序列。"
使用sprintf时需要转义。你的代码是
path
是C:
。有关如何正确转义的示例,请查看sprintf
的文档。相反,我将使用以下代码:
P=fullfile('C:Usershasan_000DocumentsMATLABProjectImages',sprintf('%d.jpg',x))
imgarray = imread(P);
sprintf('C:\Users\hasan_000\Documents\MATLAB\Project\Images\%d.jpg', x);
应该能解决这个问题。
sprintf("% % d %年代","C: hasan_000 MATLAB文件 项目用户图像 ',x, . jpg);
是我的建议,因为它使代码更直观和可读性。
sprintf
不喜欢文件名中的反斜杠,因为它可能是特定命令的一部分。如果您简单地运行路径文件,您将看到:
path = sprintf('C:Usershasan_000DocumentsMATLABProjectImages%d.jpg', 1);
path = C:
这就是你的代码出错的地方。我目前没有坐在windows机器上,但我会尝试将斜杠从反斜杠反转到正常的
/
,看看它是否可以打开。
第二个方法肯定有效:
path = ['C:Usershasan_000DocumentsMATLABProjectImages', sprintf('%d.jpg', x)]
path = C:Usershasan_000DocumentsMATLABProjectImages1.jpg