基于opencv的车牌识别系统设计

基于opencv的车牌识别系统设计

 基于opencv的车牌识别系统设计

摘要:我国处在高速发展的时期当中,近年来汽车行业发展迅猛。前不久,中国政府正式开始逐步取消对外国汽车制造商在华车企所有权的限制,此举再次加速了汽车行业的发展。使得汽车数量日益增多,引发了越来越严峻的城市交通管理问题。通过对汽车交通管理的调查,了解到车牌识别是城市交通管理的重要组成部分。本次的车牌识别系统应运而生。
关键词:汽车行业;城市交通管理;车牌识别
 
Vehicle License Plate Recognition System Based On OpenCV
Abstract:China is in a period of rapid development. In recent years, the automotive industry has developed rapidly. Not long ago, the Chinese government officially began to phase out the restrictions on the ownership of foreign car manufacturers in China, which again accelerated the development of the automotive industry. The increasing number of cars has caused more and more severe urban traffic management problems. Through the investigation of car traffic management, we learned that license plate recognition is an important part of urban traffic management. This license plate recognition system came into being.
Keywords: Automotive Industry; Urban Traffic Management; License Plate Recognition
 
一、系统概述 
(一)系统简介
随着我国的经济的飞速发展,人们的生活水平不断提高,汽车的数量高速增长,城市交通管理问题也日益突出。为了减少交通管理的压力,提高管理的效率,城市智能交通管理系统的出现使得管理变得轻松有效,车牌识别系统正是这个系统不可或缺的重要一环。
车牌如同人的身份证一般,通过查询车牌就能准确定位到车辆相关的身份信息。获取车牌作为最简单方便、最易获取的识别车辆的一种手段,因此车牌识别有着广泛的应用,它在城市交通的引导,小区、单位的车辆管理,收费站的收费,违章拍照,车辆监控等方面发挥了至关重要的作用。传统的识别设备有着诸多问题,比如不够灵活,识别准确率不够高,设备成本过高等等。因此本系统加入了移动端的开发。
此车牌识别系统基于OpenCV。它的全称是Open Source Computer Vision Library,计算机视觉开源库。顾名思义,它就是一个可以应用在计算机视觉领域的一个开源的库,包含了很多模块,比如:核心功能、图像处理、影像分析、3D校准、平面特征、对象侦察、HIGHGUI等等。它在BSD的许可下发布,在学术和商业应用上都能免费使用,我们可以根据需求修改它的源代码。它可以运行在Windows、Linux、Mac和移动端的Android上,提供了很多接口,有着大量的下载和使用案例,领域从交互到图像识别都有涉及。
如今的图像处理有着三大劣势:
1、一般的图像处理代码效果较差,兼容性不好。
2、使用了成本较高的商业工具,比如MATLAB等等。
3、必须使用配套设备辅助实现。
这说明缺少了标准的接口来帮助图像处理的开发,而OpenCV正努力将这个标准实现。它使用C语言编写,使得运行速度大幅提升,由于OpenCV是基于C语言的,在开发中将会用到NDK。NDK即Native Development Kit,它是Android的一个工具开发包,NDK属于安卓的,与Java无直接关系,它可以帮助我们快速开发C、C++的动态库,并自动将so文件和应用一起打包成APK。可以通过NDK在Android中使用JNI与本地代码交互,比如C、C++。
本系统可以通过移动端的摄像头或者从相册文件获取图片,从图片中找出特征进行识别。该系统基于Android API 23,可以安装运行在Android 6.0操作系统上。
(二)开发工具
1、谷歌Android Studio 3.1.1
Android Studio 3.1.1具有如下特点:
(1)Android Stuido是Google推出的,专门为Android“量身定做的”IDE。它是Google基于IntelliJ IDEA这个付费JAVA IDE改造而来的,所以它的速度更快,相比于Eclipse,它在启动速度、响应速度、内存占用上有着更好的表现。Studio自带的Darcula主题也更加美观。
(2)它的提示补全更加智能,有很多的快捷键。比如Ctrl+Alt+L代码格式整理、Alt+Enter智能导入包等等,能够大大提高开发效率。图片控件在布局和代码中能实时预览。
(3)Studio整合了Gradle构建工具。Gradle是一个新的构建工具,能帮助配置、编译、打包应用。除此之外,它也整合了我们开发所需的NDK。
2、opencv-3.2.0-android-sdk
OpenCV Android SDK 是OpenCV为安卓提供图像处理的SDK。其中包含了OpenCV Manager的APK安装文件,在samples文件夹中是开发的示例代码,sdk目录中是视觉开源库的java代码。使用OpenCV最方便的方法是直接安装Manager安装包,导入其java代码,之后在应用中用OpenCVLoader.initAsync()方法加载,即可使用其功能。但是这个方法不仅要安装车牌识别程序的APK还要安装Manager的APK,使得客户的体验不够良好,所以要用一些其它方式构建SO文件去使用它。
3、NDK 16.1
NDK是安卓的一个开发工具包,它可以在Android中使用C/C++的开源库,具有运行效率高、代码安全性高、功能拓展性较好,易于移植和代码的重复使用等特点。且额外提供了将SO文件和APK文件打包的工具。
二、系统分析
(一)需求分析
随着移动设备的崛起,尤其是智能手机,传统的桌面设备不再是人们处理信息的唯一平台,且移动端相比与桌面端具有着灵活,传感器多的特点,越来越多的开发者选择在移动端上开发。移动平台在无线网络下进行数据共享,将数据在任何状态下进行传输。这会对人们的生活有着相当的改变。
移动平台是一个前景巨大的平台。根据移动数据分析公司Sensor Tower公布的一项调查显示,2017年的Google Play下载量达到了640亿次,相比去年增长了16.7%,Google Play商店应用数量整体上涨了30%,达到了360万,可见人们对移动应用的需求之大。
智能手机的普及使得人们在工作生活中对图像的处理不再依靠传统的专业设备,而是转向移动设备。顺丰快递的巴枪就是最好的例子。如果观察够仔细,会发现每个顺丰快递员都配备了一个电子巴枪,当快递员收发快递时,使用巴枪扫描物件的条码,来获取或上传相关信息。这个工具显著提高了顺丰的揽件速度,降低了错误率,可谓是顺丰口碑的功臣之一。当时的巴枪是专门的设备,不仅使用体验不够好,而且造价较高,如今的第六代巴枪已经变了样,简单的讲就是一部Android手机加上定制的APP。不仅节省了成本,而且软件升级更加灵活,使用体验更好。移动设备已经显现出它独有的优势。因此,移动端的车牌识别很有必要。
(二)业务分析
首先获取图像信息。在Android中有两种方法,一是从设备的摄像头中拍照获取,另一种是从文件中选取图片得到。
要想识别车牌,先对车牌进行预处理操作,先让NDK调用OpenCV,从原图中识别出车牌的大致区域,进行MSER最大极值稳定区域匹配,确定大概的车牌位置轮廓,然后进行灰度化操作,让图片的像素范围减小到255种,使得图像的计算量减少一些。灰色图像仍然反应了图像的轮廓整体,亮度特征。之后进一步选取出车牌,进行自适应的阈值化操作,降噪处理,最后找到合理的系数,进行字符的分割。
字符分割出来后,进行对单个字符的识别操作。识别部分主要进行SVM分类器的训练。SVM即支持向量机算法(Support Vector Machine),它是一种模式识别的算法。选取100张的正样本和50张的负样本,将图片中的所有像素点作特征,标出数据的记号,比如1、-1。从而预测图片上的字符。要注意的是,车牌中没有字母“I”和“O”。易混淆字母中可以通过增加样本数量单独训练来提高识别率。
 
目    录
 
一、 系统概述 1
(一)系统简介 1
(二)开发工具 2
1、谷歌Android Studio 3.1.1 2
2、opencv-3.2.0-android-sdk 2
3、NDK 16.1 3
二、 系统分析` 3
(一)需求分析 3
(二) 业务分析 3
(三) 功能模块设计 4
三、 系统实施 4
四、 系统测试 11
五、 系统使用说明 14
六、 结束语 14
七、 参考文献 15
 
七、参考文献
[1]  OpenCV Online documentation https://docs.opencv.org/
[2]  Android 使用OpenCV的三种方式(Android Studio) .https://blog.csdn.net/sbsujjbcy/article/details/49520791
[3]  在Android Studio上进行OpenCV 3.1开发 http://johnhany.net/2016/01/opencv-3-development-in-android-studio/.
[4]  NDK-JNI实战教程 http://blog.csdn.net/yanbober/article/details/45309049.

暂时没有评论

真实

多重认证,精挑细选的优质资源 优质老师。

安全

诚实交易,诚信为本。

保密

所有交易信息,都为您保密。

专业

10年专业经验,10年来帮助无数学子。