【问题标题】:Import Multiple Images With Unknown Names导入多个名称未知的图像
【发布时间】:2014-01-23 18:11:04
【问题描述】:

我需要在 Matlab (2013b) 中从 Matlab 预定义目录的子目录中导入多个图像 (10.000)。

我不知道图片的确切名称。

我试过了:

file = dir('C:\Users\user\Documents\MATLAB\train');
NF = length(file);

for k = 1 : NF
    img = imread(fullfile('C:\Users\user\Documents\MATLAB\train', file(k).name));
end

虽然我使用管理员权限运行它,但它会引发此错误:

Error using imread (line 347)
Can't open file "C:\Users\user\Documents\MATLAB\train\." for reading;
you may not have read permission.

【问题讨论】:

  • "C:\Users\user\Documents\MATLAB\train\。"对我来说似乎不是图像文件的路径。
  • 我在这个子目录中有多个图像。我从另一个线程复制并粘贴了代码
  • 我试图指出您的文件路径不是您认为的那样。请参阅下面的答案。

标签: image matlab file file-io matlab-cvst


【解决方案1】:

“dir”命令返回虚拟目录元素“.” (自我目录)和“..”父级,如您的错误消息所示。

一个简单的解决方法是根据您的图像类型使用更具体的dir 调用:

file = dir('C:\Users\user\Documents\MATLAB\train\*.jpg');

【讨论】:

    【解决方案2】:

    检查 dir 的输出。前两个“文件”是...,这与windows dir命令的行为类似。

    file = dir('C:\Users\user\Documents\MATLAB\train');
    NF = length(file);
    
    for k = 3 : NF
        img = imread(fullfile('C:\Users\user\Documents\MATLAB\train', file(k).name));
    end
    

    【讨论】:

      【解决方案3】:

      在 R2013b 中你必须这样做

      file = dir('C:\Users\user\Documents\MATLAB\train\*.jpg');
      

      如果您有带有计算机视觉系统工具箱的 R2014b,那么您可以使用imageSet

      images = imageSet('C:\Users\user\Documents\MATLAB\train\');
      

      这将创建一个对象,其中包含train 目录中所有图像文件的路径,无论格式如何。然后你可以像这样阅读i-th 图片:

      im = read(images, i);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 2023-02-21
        • 2020-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        相关资源
        最近更新 更多