车牌识别(MATLAB)

直接上程序: 

%车牌识别程序
%根据hsv色彩定位法定位车牌,将图像转为HSV模型,获取每个像素点的HSV值,判断是否为蓝色像素点,统计每行每列蓝色像素点的个数,从而获取车牌位置
%根据该位置对原始彩色图像进行剪裁,并进行二值化,滤波、去点处理,为字符分割做准备
%按顺序切割出7个字符,并保存为7张图片
%分别提取图片和模板进行比较,将比较结果最接近的确定为对应模板,并最终显示车牌识别结果

I=imread('E:\车牌识别 - 2\程序、配套的字符模板、车牌照片 - 2\车牌照片\car2.jpg');                      %读入车牌照片
figure(1),imshow(I),title('原图');


%%%%根据hsv色彩定位法定位车牌%%%%
Image=im2double(I); %把图像数据类型转换为double类型 
Image=rgb2hsv(Image); %将RGB图像转化为hsv模型,H色相,S饱和度,V亮度 
[y,x,~]=size(Image);  
Blue_y = zeros(y, 1);  
p=[0.56 0.71 0.4 1 0.3 1 0];  
for i = 1 : y  
    for j = 1 : x  
        hij = Image(i, j, 1);  %取出每个像素点的H、S、V值
        sij = Image(i, j, 2);  
        vij = Image(i, j, 3);  
        if (hij>=p(1) && hij<=p(2)) &&( sij >=p(3)&& sij<=p(4))&&(vij>=p(5)&&vij<=p(6)) %若像素点的HSV处于蓝色的HSV范围 
            Blue_y(i, 1) = Blue_y(i, 1) + 1;%统计每行的蓝色像素点数目   
        end  
    end  
end  
[~, MaxY] = max(Blue_y);%获取蓝色像素点最多的行号 
Th = p(7); %Th=0 
PY1 = MaxY;  
while ((Blue_y(PY1,1)>Th) && (PY1>0))%找到车牌上边界  
    PY1 = PY1 - 1;  
end  
PY2 = MaxY;  
while ((Blue_y(PY2,1)>Th) && (PY2<y))%找到车牌下边界
    PY2 = PY2 + 1;  
end  
PY1 = PY1 - 2; %上下边界校正(扩大) 
PY2 = PY2 + 2;  
if PY1 < 1  %如果图像内容只有车牌,上述校正可能会使得边界值超出合理范围,此处防止边界值超出图像范围
    PY1 = 1;  
end  
if PY2 > y  
    PY2 = y;  
end  
It=I(PY1:PY2,:,:);%Y方向获取原图的车牌区域  
figure(2),subplot(3,1,1),imshow(It),title('hsv色彩分割法进行车牌行定位结果');
IY &#
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值