我有这样的代码;
for x = 1:100
path = sprintf('C:\Users\hasan_000\Documents\MATLAB\Project\Images\%d.jpg', x);
imgarray = imread(sprintf(path));
end
我有一个文件夹涉及100张图片。我想通过循环自动上传将它们转换为矩阵。
但是我收到了这个错误:
无法打开文件" C:"阅读;
你可能没有阅读权限。
我该如何解决问题?
谢谢,
答案 0 :(得分:5)
代码应该输出警告:
"警告:转义序列' \ U'无效。请参阅'帮助sprintf'有效逃脱 序列。 "
使用sprintf时,您需要转义\
。您的代码path
为C:
。有关如何正确转义的示例,请查看sprintf
的文档。相反,我会使用这段代码:
P=fullfile('C:\Users\hasan_000\Documents\MATLAB\Project\Images',sprintf('%d.jpg',x))
imgarray = imread(P);
答案 1 :(得分:3)
sprintf('C:\\Users\\hasan_000\\Documents\\MATLAB\\Project\\Images\\%d.jpg', x);
应解决问题。
的sprintf( '%S%d%s' 的,: 'JPG' 'C \用户\ hasan_000 \文件\ MATLAB \项目\ IMAGES \',X,);
是我的建议,因为它使代码更直观和可读。
答案 2 :(得分:2)
sprintf
不喜欢文件名中的反斜杠\
,因为它可以是特定命令的一部分。如果您只是运行路径文件,您将看到:
path = sprintf('C:\Users\hasan_000\Documents\MATLAB\Project\Images\%d.jpg', 1);
path = C:
这就是代码中断的地方。我目前没有坐在Windows机器上,但是我尝试将反斜杠\
的斜线反转为正常的/
并查看是否可以打开它。
第二种方法肯定有用:
path = ['C:\Users\hasan_000\Documents\MATLAB\Project\Images\', sprintf('%d.jpg', x)]
path = C:\ Users \ hasan_000 \ Documents \ MATLAB \ Project \ Images \ 1.jpg