导入具有未知名称的多个图像

时间:2014-01-23 18:11:04

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

我需要在Matlab(2013b)的预定义目录的子目录中导入多个图像(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.

3 个答案:

答案 0 :(得分:2)

检查目录的输出。前两个“文件”是...,类似于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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

在R2013b中你必须这样做

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

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

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

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

im = read(images, i);