OpenCV学习之车牌识别系统二:MFC界面及整体设计

该车牌识别的制作是为了学习OpenCV和数字图像处理为目的的,所以在制作过程中主要是为了有识别效果产生即可,没有做很完善的系统。

针对车身不为蓝色的汽车的蓝底白字的车牌进行车牌识别,故仅能识别这样的车牌。而且是对尾数进行识别,但稍加改动即可实现对整个车牌的识别,因为运用的时模板匹配的方法,识别效果不理想,但有利于对车牌识别整个系统的充分理解。

本文主要是对整体系统的整体设计进行介绍MFC的建立等没有做详尽的说明,比较简单住用到了按钮控件和编辑控件,又需要的读者壳查阅相关资料自行设计。在这里只给出完成后的整体的MFC图形界面,并对各个控件进行解释。

图像界面可以看出系统具有四大部分分别为:定位(车牌定位),矫正(车牌字符矫正),切割(车牌字符切割),识别(车牌字符识别)


该系统的使用方法:(注意每个过程与按钮对应)]

说明:定位     等同于   彩色滤波->Canny检测->闭操作->车牌定位         这个过程 又需要观察定位的过程的可逐步执行各个按钮

同理 矫正      等同于车牌灰度化->车牌二值化->水平矫正->边框去除->垂直矫正  

切割     等同于 字符切割

模板字符的训练过程:(因为数是)

读图 -> 定位->矫正->字符切割->根据切割后的字符填写对应字符(如 车牌字符的第六位肉眼观察为数字2   则在字符六后的编辑框内填写 2_1(下次再次出现填写2_2 依次类推  根据自己设定的模板数量来决定))->点击对应按钮保存模板(如 字符六后的编辑框填写2_1 后 点击  字符六   按钮即可将数字2_1的模板保存)

依次将0——9的字符模板都保存,最终结果如下图

OpenCV学习之车牌识别系统二:MFC界面及整体设计_第1张图片

模板字符识别过程:读图->定位->矫正->切割->识别

界面各控件的作用介绍:

读图按钮:可读取待识别或者用于提取模板字符的图片

彩色滤波:对车牌进行彩色滤波滤除非蓝色的区域,突出蓝底的车牌区域。

Canny检测:对彩色滤波后的图像进行边缘检测。

闭操作:对边缘检测的图像进行闭操作

车牌定位:根据闭操作后车牌区域的非零像素点个数,及闭区域的长高及比列等来确定车牌区域。

车牌灰度化:对提取的车牌进行灰度化处理

车牌二值化:二值化处理

水平矫正:将车牌字符进行水平矫正

边框去除:去除车牌的边框

垂直矫正:对字符进行垂直方向的矫正

字符切割:对矫正后的车牌字符根据字符间隔等信息将字符进行切割

字符X:点击后将对应的字符图片保存为对应编辑框中的图片名,我保存的时0_1,0_2,0_3,0_4,0_5,1_1,..........这些名字时后续识别中所需读取的模板文件名。

字符X后面对应的编辑框:填写对应字符将要保存图片的文件名。

识别:使用模板匹配对车牌的尾数进行识别。

只读编辑框:显示识别结果。



由上面的介绍可看出该车牌识别系统的局限性,但车牌识别的整个过程也就是如此。系统测试时图片为随机选取的图片(没有找个固定摄像头下采集大量图片便只好如此,在调试过程种有很多处理的麻烦),0-9的模板字符数量均为5个(图片少所以模板数量也少的可怜),识别采用的模板匹配方法,最终实现的效果差。

你可能感兴趣的:(OpenCV)