"Can't open file "C:"供阅读;您可能没有阅读权限。" MATLAB 中的错误

"Can't open file "C:" for reading; you may not have read permission." error in MATLAB

我有这样的代码;

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

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

但是我得到这个错误:

Can't open file "C:" for reading;
you may not have read permission.

我该如何解决这个问题?

谢谢,

代码应输出警告:

"Warning: Escape sequence '\U' is not valid. See 'help sprintf' for valid escape sequences. "

使用 sprintf 时需要对 \ 进行转义。使用您的代码 pathC:。有关如何正确转义的示例,请查看 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);

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.jpg