从目录加载所有图像

时间:2013-03-27 09:12:31

标签: image matlab image-processing matlab-cvst

我在目录中有某些图像,我想加载所有这些图像来进行一些处理。我尝试使用load函数。

imagefiles = dir('F:\SIFT_Yantao\demo-data\*.jpg');      
nfiles = length(imagefiles);    % Number of files found
 for i=1:nfiles
 currentfilename=imagefiles(i).name;
 I2 = imread(currentfilename);
 [pathstr, name, ext] = fileparts(currentfilename);
 textfilename = [name '.mat'];
fulltxtfilename = [pathstr textfilename];
load(fulltxtfilename);
descr2 = des2;
frames2 = loc2;
do_match(I1, descr1, frames1, I2, descr2, frames2) ;
end

我收到错误,因为无法读取xyz.jpg没有找到这样的文件或目录,其中xyz是我在该目录中的第一张图片。
我还想从目录加载所有格式的图像,而不仅仅是jpg ......我怎么能这样做?

4 个答案:

答案 0 :(得分:9)

您可以轻松加载多个具有相同类型的图像,如下所示:

function Seq = loadImages(imgPath, imgType)
    %imgPath = 'path/to/images/folder/';
    %imgType = '*.png'; % change based on image type
    images  = dir([imgPath imgType]);
    N = length(images);

    % check images
    if( ~exist(imgPath, 'dir') || N<1 )
        display('Directory not found or no matching images found.');
    end

    % preallocate cell
    Seq{N,1} = []

    for idx = 1:N
        Seq{d} = imread([imgPath images(idx).name]);
    end
end

答案 1 :(得分:2)

我相信您需要imread功能,而不是load。请参阅the documentation

答案 2 :(得分:1)

完整路径(包含目录)不是在imgfiles.name中保存,只是文件名,因此无法找到该文件,因为您没有告诉它在哪里查看。如果您不想更改目录,请在读取文件时再次使用fullfile。

你也使用了错误的功能来阅读图像 - 试试imread。 其他注意事项:it's best not to use i for variables,你的循环在每一步都覆盖I2,所以你最终只能得到一张图像,而不是四张。

答案 3 :(得分:1)

您可以使用计算机视觉系统工具箱中的imageSet对象。它从给定目录加载图像文件名,并使您能够按顺序读取图像。它还为您提供了递归到子目录的选项。