我在目录中有某些图像,我想加载所有这些图像来进行一些处理。我尝试使用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 ......我怎么能这样做?
答案 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对象。它从给定目录加载图像文件名,并使您能够按顺序读取图像。它还为您提供了递归到子目录的选项。