基于OpenCV的车牌识别系统之二 ——字符分割与识别

基于OpenCV的车牌识别系统之二——字符分割与识别

 

车牌定位完之后就是车牌的字符识别,字符识别又分为字符分割和字符识别。字符分割的步骤采用OpenCV中寻找外轮廓函数,并根据字符轮廓在车牌图像上分割出字符图像。字符识别采用三层神经网络。本程序中采用OCR最常见的特征提取方法:首先将每个字符归一化为20*20的字符,然后在每个字符中提取出一个1*440的特征向量,这440个特征中400为统计每行和每列的像素值个数并保存到新的数据组中,采用minMaxLoc得出数据组中最大的像素值,然后这个数据组中每个像素除此这个值。40为20行和20列统计的非零像素值得个数。这就是特征向量的结构解析。知道这个特征向量是怎么来的,这样就可以写自己ANN离线训练的数据集了。

 

本程序最初的方法也是采用的书上--《深入理解Opencv实用计算机视觉项目解析》的字符分割方法,首先得到一张车牌图片,然后根据最大类间法(Otsu)得到一张较好的车牌二值化图像,之后采用findCounters寻找最外围轮廓并计算其最小外接矩形的大小--这些轮廓所包围的区域全部最为粗选的字符备选区域。然后将这些备选区域依次送入字符验证函数(下面单独介绍字符函数),当统计的通过字符验证函数有且只有7个字符时,则进行下一步—在原图上裁剪出字符区域。得到字符区域之后采用直方图均质化等等预处理。然后依次对7个字符排序,最后在将每个字符归一为20*20的图像。字符识别使用ANN算法采用三层神经网络,输入层经元数是离线训练数据集的行数,隐含层的神经元个数是20,输出层的神经元是类别的种类数。然后依次对每个字符运用ANN.predict函数得出1*类别数的数据组(数据组中是记录这个字符跟每个类别的“相似度”),使用minMaxLoc函数才找出最大概率的类别。返回其位置。根据返回数据打印出字符。但是这个程序前提的是要能精准的

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值