比较多个图像

时间:2013-03-20 14:35:40

标签: matlab file-io comparison

我编写了一个matlab函数,可以让我从用户那里获取图像的名称,并将其与现有图像进行比较,如果匹配与否则显示...

function matchin
handles = guidata(gcbo);
set(handles.h_text,'String','performing matching...');
[image1, pathname]= uigetfile('*.bmp','Open An Fingerprint image');
Directory = fullfile ('F:','matlab','bin');
D = dir(fullfile(Directory,'*.bmp'));
set(handles.h_text,'String','matching complete....');
for i = 1:numel(D)
   if strcmp(image1,D(i).name)
       disp('matched');
   else       
        disp('not matched');
   end

end

上面的代码检查文件名是否存在,但我现在要比较图像本身而不是文件名。我怎么能这样做?请帮忙..

此致

普里亚

2 个答案:

答案 0 :(得分:1)

使用strcmp代替==来比较未知长度的字符串。您可以将for loop更改为:

D = dir(Directory);
for i = 1:numel(D)
   if strcmp(image1,D(i).name)
       disp('matched');
   else
       disp('not matched');
   end
end

答案 1 :(得分:1)

你的功能应该是这样的:

function image1=matchin

[image1, pathname]= uigetfile('*.bmp','Open An Fingerprint image');
Directory = fullfile ('F:','matlab','bin');
D = dir(fullfile(Directory,'*.bmp'));
imcell = {D.name}';
for i = 1:numel(D)
  if strcmp(image1,imcell{i})
  disp('matched');
else
    disp('not matched');
  end
end

end

使用{D.name}'获取每个文件的名称。至少当我在带有图像的文件夹中尝试它时,这就是我的工作方式。