大佬们,我想问下我做的车牌识别设计,最后一步模板匹配,不管我用什么车牌,它都显示甘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