基于迪文t5l1芯片的车牌识别功能,是通过t5l1接收并处理ov2640摄像头拍摄的车牌号图片、抓取车牌字符信息来实现的。图片处理过程借助了dgus平台的基本显示功能,可在一定程度上减少二次开发工作。
演示视频
迪文车牌识别系统方案框图

资料下载
方案完整资料包下载可前往迪文开发者论坛:
硬件连接:
dgus界面设置:
“摄像头画面”用于实时显示当前的画面,用于对车牌位置的定位,以免识别目标出现位置偏差或不在摄像头画面内出现无法识别的现象,大小设置为160*40像素;
“定位”与“识别”按钮用于切换当前的工作状态,点击“定位”按钮,摄像头工作在jpeg数据输出模式,迪文屏将jpeg数据流存储到相应的变量地址中,图标叠加控件显示实时画面;
点击“识别”按钮,摄像头切换到rgb565数据输出模式,将采集到的一帧画面保存到内存中进行后续的处理;
“摄像头初始化”用于显示当前摄像头的初始化结果,包括通信校验、设备id号校验、参数设置等步骤,只有当初始化成功时,摄像头才能正常工作;
“字符上下边界”用于显示当前经过预处理后的车牌字符的上下边界值;
“分割断点数”用于显示对识别到的字符的左右断点数,正常情况下应该为16;
“阈值分割图像”利用“基本图形显示”控件显示经过二值化处理后的图像,方便判断图像预处理的效果是否达到预期以及调整二值化阈值;
“最近邻插值图像”用于显示经过插值后的每个字符的形状,大小设置为40*20像素;
“状态”栏显示当前的识别情况,是否成功;
“识别结果”用于显示最终得到的车牌字符串。
车牌识别流程图:
软件程序主要函数:
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); //显示对比结果即最终输出