车牌识别,模板匹配.

大佬们,我想问下我做的车牌识别设计,最后一步模板匹配,不管我用什么车牌,它都显示甘A00000,我不知道问题出在哪,求解答~-~

附原码

liccode=char(['0':'9' 'A':'Z' '甘川贵桂京苏豫陕']);

 num = 1;  
 for I = 1:7
    ii = int2str(I);    
    word = imread([ii,'.jpg']); 
    segBw2 = imresize(word, [40,20], 'nearest');    
    segBw2 = double(segBw2)>20;    % 图像二值化
    if num == 1   % 字符第一位为汉字,定位汉字所在字段
        kMin = 37;
        kMax = 44;
    elseif num == 2   
        kMin = 11;
        kMax = 36;
    elseif num >= 3   
        kMin = 1;
        kMax = 36;
    end
    error=1000001:1000039;
    for i=1:500
        error(i)=666666;
    end
  
    for k2 = kMin : kMax
        fname = strcat('model\',liccode(k2),'.jpg');  % 根据字符库找到图片模板
        samBw2 = imread(fname);
        samBw2 = imresize(word, [40,20], 'nearest'); 
        subBw2=zeros(40, 20);
         segBw2= double(segBw2);
        samBw2 = double(samBw2);    % 图像二值化
        
        % 将待识别图片与模板图片做差
        for i= 1:40
            for j = 1:20
                subBw2(i, j) = segBw2(i, j) - samBw2(i ,j);
            end
        end
        
        % 统计两幅图片不同点的个数,并保存下来
        Dmax = 0;
        for k1 = 1:40
            for num1 = 1:20
                if (subBw2(k1, num1)> 0||subBw2(k1, num1)<0)
                    Dmax = Dmax + 1;
                end
            end
        end
        error(k2) = Dmax;
        
    end
    
    
    error1 = error(kMin:kMax);
    Minerror=min(error1);
    findc = find(error1 == Minerror);

    Code(num*2 - 1) = liccode(findc(1) + kMin - 1);
    Code(num*2) = ' ';
    num = num + 1;
 end
 set(handles.text4,'string',Code);
 axes(handles.axes12)     
  imshow(handles.Cut,[]);   
  title('车牌');

    
 disp(Code);
 msgbox(Code,'识别出的车牌号');

 

可以opencv试试,有图像特征提取的,用算法匹配准确率会高一些

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y