一、方案介绍
基于T5L1的车牌识别方案是通过OV2640高清摄像头捕捉车牌号,T5L1芯片提取并识别车牌号码信息,实现屏幕实时显示车牌识别结果的方案。目前可实现蓝底白字、黑底白字、白底黑字等车牌的识别。
演示视频链接:https://www.bilibili.com/video/BV1fT4y1671r/
二、方案简介:
1.硬件连接:
(1) P1口分别连接摄像头数据传输D0-D7管脚
(2) P2^0连接SCL、P2^1连接SDA、P2^2连接PWDN、P2^3连接RST、P2^4连接VSYNC、P2^5连接HREF、P2^6连接PCLK
(3) P2^1通过上拉电阻3.3k连接到电源3.3V上
2.DGUS界面设置:
1)摄像头画面用于实时显示当前的画面,用于对车牌位置的定位,以免识别目标出现位置偏差或不在摄像头画面内出现无法识别的现象,大小设置为160*40像素。
(2) “定位”与“识别”按钮用于切换当前的工作状态,点击“定位”按钮,摄像头工作在JPEG数据输出模式,迪文屏将JPEG数据流存储到相应的变量地址中,通过图标叠加空间显示实时画面;点击“识别”按钮,摄像头切换到RGB565数据输出模式,将采集到的一帧画面保存到内存中进行后续的处理。
(3) “摄像头初始化”用于显示当前摄像头的初始化结果,包括通信校验、设备ID号校验、参数设置等步骤,只有当初始化成功时,摄像头才能正常工作。
(4) “字符上下边界”用于显示当前经过预处理后的车牌字符的上下边界值。
(5) “分割断点数”用于显示对识别到的字符的左右断点数,正常情况下应该为16。
(6) “阈值分割图像”利用“基本图形显示”控件显示经过二值化处理后的图像,方便判断图像预处理的效果是否达到预期以及调整二值化阈值。
(7) “最近邻插值图像”用于显示经过插值后的每个字符的形状,大小设置为40*20像素。
(8) “状态”栏显示当前的识别情况,是否成功。
(9)“识别结果”用于显示最终得到的车牌字符串。
3.车牌识别流程图:
4.软件程序主要函数:
void RGBImage_Acquisition(void); //RGB565数据采集,存储到内存空间
void JPGImage_Acquisition(void); //JPG数据采集,在屏幕上显示
void RGBImage_threshold(); //二值化处理
void Gray_Filter(); //二值化后图像滤波,删除多余杂点
void GRAY_Image_draw(); //将二值化后的图像通过基本图形控件显示
void Table_ChangePoint(u16 Width, u16 Height); //统计每行和每列黑色像素点的个数
void ChangePoint_Analysis_row(void); //横向跳变点分析,用于统计图像的上下边界
void Nearest_neighbor(u8 left,u8 right,u16 up,u16 down);//最近邻插值法将字符放缩到标准
void Nebour_GRAY_Image_draw(); //最近邻插值图像显示
u8 Segmentation_Char(void); //分割字符个数统计及左右边界记录
void Template_Cnstruction(); //创建模板行列跳变特征向量
void Template_Comparison_All(); //全像素点与模板进行比较
void Template_Comparison(); //与模板行列特征向量比较
void License_plate_display(u16 x,u16 num); //显示对比结果即最终输出 |
很好的资源,学习啦~~