加载目录中的所有图像

我有一个目录中的某些图像,我想加载所有这些图像做一些处理。 我尝试使用loadfunction。

 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格式…我怎么能这样做?

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

 function Seq = loadImages(imgPath, imgType) %imgPath = 'path/tohttp://img.dovov.comfolder/'; %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 

我相信你想imread函数,而不是load 。 请参阅文档 。

完整path(包括目录)不在imgfiles.name中,只是文件名,所以它找不到文件,因为你没有告诉它在哪里看。 如果您不想更改目录,请在读取文件时再次使用fullfile。

您也正在使用错误的function读取图像 – 尝试imread。 其他注意事项: 最好不要使用i作为variables ,而且每一步都会覆盖I2,所以最终只会有一个图像,而不是四个。

您可以在计算机视觉系统工具箱中使用imageSet对象。 它从一个给定的目录加载图像文件名,并使您能够按顺序读取图像。 它也给你selectrecursion到子目录。