3

我有这样的代码;

for x = 1:100
    path = sprintf('C:\Users\hasan_000\Documents\MATLAB\Project\Images\%d.jpg', x);
    imgarray = imread(sprintf(path));
end

我有一个文件夹涉及 100 张图片。我想通过循环自动上传将它们转换为矩阵。

但我得到这个错误:

无法打开文件“C:”进行阅读;
您可能没有阅读权限。

我该如何解决这个问题?

谢谢,

4

3 回答 3

5

代码应输出警告:

“警告:转义序列 '\U' 无效。有关有效的转义序列,请参阅 'help sprintf'。”

\使用 sprintf 时需要转义。用你的代码pathC:. 有关如何正确转义的示例,请查看sprintf. 相反,我会使用以下代码:

P=fullfile('C:\Users\hasan_000\Documents\MATLAB\Project\Images',sprintf('%d.jpg',x))
imgarray = imread(P);
于 2015-06-03T10:12:10.747 回答
4

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

这是我的建议,因为它使代码更直观和可读。

于 2015-06-03T10:13:55.443 回答
2

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

于 2015-06-03T10:15:01.200 回答