代码之家  ›  专栏  ›  技术社区  ›  Padmapriya Subramanian

比较多个图像

  •  0
  • Padmapriya Subramanian  · 技术社区  · 12 年前

    我编写了一个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 回复  |  直到 12 年前
        1
  •  1
  •   Molly    12 年前

    使用 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
    
        2
  •  1
  •   George Aprilis    12 年前

    你的功能应该是这样的:

    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}' 。这就是它对我的作用——至少当我在一个有图像的文件夹中尝试时是这样。