"无法打开文件" C:"阅读;您可能没有阅读权限。" MATLAB中的错误

时间:2015-06-03 09:47:26

标签: image matlab image-processing svm imread

我有这样的代码;

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

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

但是我收到了这个错误:

  

无法打开文件" C:"阅读;
      你可能没有阅读权限。

我该如何解决问题?

谢谢,

3 个答案:

答案 0 :(得分:5)

代码应该输出警告:

  

"警告:转义序列' \ U'无效。请参阅'帮助sprintf'有效逃脱   序列。 "

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