加载目录中的所有图像
我有一个目录中的某些图像,我想加载所有这些图像做一些处理。 我尝试使用load
function。
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到子目录。