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