




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言科学技术的日益发展的同时也促进了现代化管理手段日益进步,私家车数量的骤增也使得大众对停车场车辆管理的要求越来越高。尤其是一些特殊停车场,比如对商场及政府机关、校园等环境的停车场而言,更加对各重视对车辆进行全面地严格的管理,再加上现如今各大商场商圈多采用外来车辆收费服务,人工进行这样大规模的收费记录是特别耗时费力的,在现今的大规模的场所中,出入的车辆数目是非常庞大的,如果都要人工对每辆车进行判断,费时的同时又不利于管理,保卫工作也比较困难,效率更是低下。为了改善现今与现代化、自动化停车场不相符合的管理情况,我们需要运用相应的软件管理系统,实现停车场管理的高效率、智能化,对出入的车辆进行有效地、准确地监测和管理。该商场停车场自动收费系统是利用车牌识别算法,自动识别车牌号码,并将车牌号码等特征信息及入场时间信息等进行记录,并进行相应的分类管理和收费管理,以提供方便快捷的新型服务模式。在当今现代化的生活中,汽车出行是人们不可或缺的一种交通方式,为了更好的管理汽车停靠,现如今很多学校、高档社区和商场的停车场开始实行了停车计时收费政策,但人工的收费管理既浪费人力物力,又有造成车辆拥堵情况的可能。在这种趋势下,智能交通开始逐渐成为现代交通管理的重要角色。随着商场停车场进出车辆的增多,无论是工作人员开车来商场上班,还是一些外来车辆的出入对于商场的停车场已经提出了考验,日益增大的车辆管理需求使得建立一个停车场自动收费管理系统显得尤为重要,该系统既能对车牌进行有效快速的识别,还能将车辆信息与数据库数据进行对比匹配,以实现对车辆的分类管理。通过加载Keras框架的卷积神经网络模型,实现对商场内部工作人员的车辆直接放行且不收费,对外来车辆进行计时收费。对确保商场人员安全和避免交通拥挤做出巨大贡献。
问题定义1.1系统名称商场停车场自动收费及管理系统。1.2系统目标商场停车场自动收费管理系统主要分为五大部分,即管理员登录、模型的训练及调用、车牌分割识别、数据管理及外部车辆收费。其中管理员登录部分包括普通管理员和超管的注册和登录;模型的训练及调用部分包括对成熟的卷积神经网络模型的加载和使用;车牌分割识别部分包括对一张本地车牌图片进行分割识别,并将相关信息存入数据库;数据管理部分包括超级管理员对该系统车辆的信息和普管信息进行维护和更新,即增加、删除、修改以及查询功能,外部车辆收费部分包括对数据库中的商场内部车辆信息进行对比,如果确认为外部车辆则对其停靠时间进行收费。
2、可行性研究2.1项目目标商场停车场自动收费管理系统的目标是可以使超级管理员和普通管理员能高效快速的管理停车场车辆的出入情况,并对商场内部车辆信息及普通管理员信息进行更新管理和安全维护。2.2可行性分析2.2.1技术可行性现今数据分析和人工智能最流行的编译语言是Python,Python是运行在解释器上的解释型编码语言,具有跨平台的特征。因为Python的代码简洁明了,简单易学,故选择Python3作为本系统的开发语言。此外,在开发系统时选用的操作系统是较为稳定的Windows7,虽然版本相对Windows10有些低,但其稳定性和发展的成熟度十分优越;IDE集成开发环境有很多选择,本系统IDE选择Pycharm,并用Anaconda虚拟环境下的Python进行相应代码编辑,Anaconda3是一个环境的管理器,也是一个开源的包。通过使用Anaconda3提供的虚拟环境,可以在同一个机器上安装和使用不同版本的软件包及其依赖,并且能够通过命令行实现在不同的虚拟环境之间的自由转换,由于Anaconda3具有的广泛的兼容性和其完备的功能性,使得本系统所需要的后台环境可以方便的下载,提高了卷积模型的训练和调用速率。界面展示方面,选用Django框架和H5进行Web的页面布局,布局的同时链接数据库。数据库方面选用轻量级的Sqlite3,易于学习和操作,综上,该系统在技术上是可行的。2.2.2经济可行性商场停车场自动收费管理系统在开发中使用的全部软件,都可以在网上免费下载官方正版,并且可以直接在自己的电脑上开发,不需要资金购买,数据库使用的是开源的Sqlite3没有使用一些收费的数据库,例如Oracle,服务器使用的是自带的服务器,节约了经济上的花费,在经济上是可行的。2.2.3操作可行性商场停车场自动收费管理系统是面向停车场收费管理人员的,已经注册的管理员可以直接登录,没有注册的只要完成注册通过审核就可以登陆,不需要安装任何软件也无需配置各种环境,管理员即使没有经验经过一定讲解也可以操作,避免了由于复杂操作可能带来的问题。管理界面设计的简洁明了,管理员根据显示的界面就能知道如何去进行操作,通俗易懂。使用该系统可以减少商场雇佣多余的简单劳动力,并且可以安全有效的保存和管理车辆信息数据,该系统使工作人员对商场进出车辆的管理更加的准确化、规范化、系统化,在操作上是可行的。2.2.4法律可行性商场停车场自动收费管理系统的开发应用的所有软件都是正版,该系统的开发所使用的语言、工具、技术等均不违反任何法律,车辆信息只面向系统管理员进行公开,本次系统演示所需要的车牌信息及数据库数据均为杜撰,故不存在抄袭或者侵权等责任问题。商场停车场自动收费管理系统在法律上是可行的。2.2.5社会可行性随着社会经济的快速发展,特别是汽车和住房两大消费热点的持续升温,人们对于停车场的需求越来越迫切,停车场收费系统作为公共建筑和大型住宅区的重要组成部分,越来越引起人们的重视,停车场的系统升级改造,显得尤为重要,建设商场停车场收费系统也有其社会意义,首先能起到有效的防盗窃作用。车辆进出有时间视频记录,能有效防止车辆盗窃和更换;还可以有效防止收费收入的流失;由于车辆进出库数据在计算机系统中有详细的记录,可以杜绝人为漏收和落个人腰包事件的发生;商场停车场自动收费管理系统的出现多社会的发展和稳定做出了很大贡献,因此商场停车场自动收费管理系统在社会层面上是可行的。
3、需求分析3.1系统需求分析商场停车场自动收费系统可以自动识别进入和驶出该停车场车辆的车牌号码,同时验证车辆是否为内部车辆,并对分类后的车辆进行不同操作,其中包括出、入口管理及收费管理,管理员可以通过界面进行管理、更新和收费等工作。内部车辆在该停车场可以通过超级管理员存储和更新车辆信息。同时通过本系统可以实现该商场停车场对于内外部车辆的出入、收费、信息维护等管理的准确化、智能化,并且具有易于操作,保护信息安全等优点。3.1.1性能需求商场停车场自动收费系统性能需求有:节省开支,该系统只需要一到两名人员进行简单培训后即可操作系统;全天候正常工作,保持较高的车牌信息识别率;3.1.2功能需求商场停车场自动收费系统功能需求有:1)模型的构建及训练;2)车牌图片分割和识别;3)对车牌信息进行分类;4)停车收费;5)异常车辆处理;6)系统管理功能。3.1.2开发环境硬件环境:三星笔记本电脑,64bit,4G内存操作系统:Windows7数据库:Sqlite3开发工具:Python3.7、Keras2.2.4、Anaconda3、Pycharm3.1.3安全保密需求商场停车场自动收费及管理系统通过设置登录界面来保证车辆信息的安全性,非管理员无法对车辆进行收费和信息管理,就算是系统管理员也必须通过登录或注册才能进入系统,且只有管理员有权限调用查看和修改数据库中的数据,保证了数据的安全。
4、总体设计4.1系统功能总体设计图图4-1停车场自动收费及管理系统总体设计图Figure4-1Generaldesignofautomaticchargingandmanagementsystemforparkinglot该系统面向停车场收费管理员的用例图如下:图4-2收费管理员用例图Figure4-2ChargeAdministratorUseCaseDiagram由上述用例图可以看出管理员主要的操作功能包括管理员的登录注册功能、车牌分割识别功能、数据库信息管理和车牌分类收费功能等。4.2登录注册功能商场停车场自动收费及管理系统的登录注册功能仅对商场的停车场普通管理员和超级管理员进行开放,管理员们登录到商场停车场自动收费及管理系统的登录注册界面,输入其唯一的用户名和密码,登录验证用户名和密码及审核情况成功后才能进入该系统,从而管理车辆的出入及收费情况。每个管理员都有各自唯一的账号和密码,只有管理员本人使用正确的管理员用户名和密码才能登陆成功使用该系统,否则会出现异常提醒,无法登录。图4-3管理员类图Figure4-3AdministratorClassDiagram上图所示为本系统对于管理员的一个manager类图,可以看出在该类中有关于管理员用户名、密码、性别和年龄的属性;并且有Meta函数进行调用。图4-4管理员E-R图Figure4-4AdministratorE-RDiagram4.3车牌识别模型构建及训练本系统的车牌识别模型构建及训练部分实质上就是通过构建卷积神经网络模型达到对图片上的内容进行分类识别的作用。由于时间上的紧凑,故本系统使用的车牌识别模型是一个成熟的训练好的卷积神经网络模型,使用已经训练好的卷积神经网络模型可以大大缩减系统开发时间,且可以提高车牌的识别准确率。本次使用的卷积神经网络模型结构:图4-5卷积神经网络模型结构图Figure4-5StructuralChartofConvolutionalNeuralNetworkModel由上图所示,该卷积神经网络模型的输入层接收的是大小为20*20,归一化后的灰度图像;将其传入卷积层conv2d_2:Conv2D,该卷积层共有32个卷积核,通过卷积核对输入图像进行卷积,得到18*18的特征图,再将18*18的特征图作为池化层的输入,由上结构图所示,该卷积神经网络模型用的池化方法为max_pooling2d_2:MaxPooling2D,即最大池化方式,池的大小为9*9。最大池化方式的池化操作就是将特征图分割为互不重叠的池块,将每个池块的最大值作为每个池的特征值输出,就得到了32个9*9的特征图。之后再将9*9的特征图作为输入继续进行上结构图的卷积与池化,得到如上述结构图的3*3特征图;之后用Flatten函数将二维的特征图转换为一维的向量,其长度为576,并将其作为下一层的输入,下一层即为全连接层Dense,通过全连接层对特征向量进行分类,全连接层包含一个输入层、多个隐藏层和一个输出层,每一层也有很多个神经节点,在结构图中就不予体现了。最后配合激活层Activation的Relu激活函数,使特征图中诸如车牌图片背景等无意义的特征进行规避,以提高卷积神经网络模型的准确率。综上,是本系统应用的卷积神经网络模型的构建原理及结构。此外,本次使用的卷积神经网络模型运用的是ResNet网络结构,ResNet的来源是出于解决“在不断增加神经网络的深度时会出现Degradation(退化),导致准确率下降”的问题,本次借鉴的模型应用ResNet网络结构使用ResNet残差学习单元将学习目标进行修改,不在输出学习后的完整输出值而是输出和输入的差别,即残差。图4-6残差学习:构建块Figure4-6ResidualLearning:BuildingBlocks在使用了ResNet结构后,层数加深导致的训练集上误差增大的现象有很大改善,这个结构并不会网络增加额外的参数和计算量,同时可以大大增加模型的训练速度,解决退化问题。上述已经建立成熟的卷积神经网络模型本身自带大量的数据集并且已经训练完成,故在此只做简略介绍。该模型采用的的是Keras框架,Keras框架在训练模型之前还要进行编译,如Accuracy函数和Loss损失函数。Loss损失函数是我们训练时的一个重要指标,这个损失函数的值表示卷积神经网络对于真实结果的差距,这个值越大则表明误差越大,和0越接近说明我们的神经网络训练的越精确。本次使用的卷积神经网络模型的Loss值为0.0003左右,Accuracy值为0.996左右。4.4车牌分割识别功能商场停车场自动收费管理系统的车牌识别功能是本系统的核心功能,在这一功能中,系统自动对车牌进行分割和识别,分割和识别是一个连贯的过程。大体上分为内部车辆识别和外来车辆识别部分。首先从电脑本地上传一张图片,对车牌图片进行分割和识别,识别后的车牌号进行输出显示,只要不是黑名单车辆均可进入停车场;在出口对车牌图片进行分割识别时,如果是内部车辆,则直接放行,如果是外来车辆,则根据停靠时间收取相关的费用,并且将出入时间及收费金额等存储到数据库中。车牌识别的功能设计中主要运用Keras框架来加载使用上述的卷积神经网络模型,分割识别这一部分流程图如下:图4-7车牌分割识别流程图Figure4-7LicensePlateSegmentationandRecognitionProcessDiagram由上述流程图所示,对输入的车牌图片灰度化和二值化处理后进行分割,分割后的单个车牌字符图片转换成20*20的像素大小后,输入之前介绍的卷积神经网络模型中,识别过后输出车牌图片的字符串。训练好的神经网络,只要将权重文件保存起来,在下一次使用神经网络时,用模型加载权重文件,就可以进行预测,或者再次训练,采用loaded_model=keras.models.load_model('./save_models/chars_trained_model.h5')语句进行加载已经训练和保存好的卷积神经网络模型,即可输出相应的识别结果。4.5数据库信息管理功能商场停车场自动收费管理系统的数据管理功能主要是管理员根据现实情况对数据库中的内部车辆的表中的车辆信息进行比对后,可以对内部车辆信息进行增加、删除、修改和查询的操作,并且对进入商场的外部车辆进行管理和收费。在数据库信息管理这部分,主要用到的是对商场内部车辆的信息管理,其类图如下:图4-8内部车辆类图Figure4-8InternalVehicleClassDiagram由上述类图所示,chepai类主要由车牌号、用户名及联系方式等属性构成,可以实现对车辆信息的存储和介绍,同样是用Meta函数进行建表和调用。概念模型设计之车牌信息E-R图:图4-9内部车辆E-R图Figure4-9InternalVehicleE-RDiagram内部车辆信息包括车主姓名、车牌号、联系方式、以及所属部门,通过对内部车辆信息的查看和对比可以一目了然内部车辆的所属和外部车辆的判断。在停车场停靠记录的数据库方面,主要建立的类是关于车牌识别之后对车辆出入时间的记录和录入情况,类图如下:图4-10停靠车辆总记录类图Figure4-10GeneralRecordClassDiagramofParkingVehicles由上述类图所示:记录停车场停靠车辆信息的累主要有车牌号码、进入时间和出场时间等属性构成,同样由Meta函数进行调用。图4-11停靠车辆E-R图Figure4-11E-RDiagramofParkingVehicles车辆停靠信息主要包括车牌号、进出时间及收费金额;对于进入商场停车场的车辆该系统都会进行记录,而在驶出时会对车辆信息和内部车牌进行对比,如果判断为内部车辆则金额记录为0,如果是外部车辆则按收费标准进行收费并记录。256784.6.1数据库物理结构设计表4-1管理员表Tab.4-1Administratortable字段名称数据类型长度可否为空主键字段说明idint32否是管理员编号usernamechar32否否管理员名passwordchar32否否密码Sexchar32否否性别Ageshenheint char3232否 否否否年龄 审核情况表4-2商场内部车辆表Tab.4-2Vehiclewatchesinshoppingmalls字段名称数据类型长度可否为空主键字段说明idint32否否车牌编号platenumchar32否是车牌号ownerchar32否否车主名Telnumint32否否联系方式documentchar32否否所属部门表4-3停车场车辆停靠总记录表Tab.4-3GeneralRecordofParkingLots字段名称数据类型长度可否为空主键字段说明idint32否否记录编号platenumchar32否是车牌号intimedatetime32否否进入时间outtimedatetime32否否驶出时间amountchar32否否收费金额4.6车牌分类及收费功能商场停车场自动收费管理系统的车牌分类及收费功能是基于对车辆的车牌信息即车牌号码进行识别和数据库信息比对后,内部车辆可以直接放行,而外部车辆按停靠时间进行收费。由于商场停车场大多公用出入口,故本功能的出入口管理也可以理解为出口和入口是相同的,具体流程详见图5-10和图5-11。
5、详细设计5.1开发工具的选用及主要技术介绍商场停车场自动收费及管理系统是用Python语言进行编写的,故为了方便,环境是选择了Anaconda的虚拟环境,并且安装了Keras和Opencv3等包;数据库选择了Pycharm自带的SQLite数据库。因此后台工具选择Pycharm,而前端设计页面选择了Django和H5的模式进行编写;此外车牌识别的部分使用的是基于Keras框架加载的一个卷积神经网络的模型。5.1.1Python与Anaconda3Python有十分简单通俗的语法,非常适合我这样的新手上手学习。Python的本质是运行在解释器上的解释型的语言,具有跨平台的特征。Python不仅是支持面向对象的编程,而且它还支持面向过程的编程。它应用的如此广泛得益于Python语言不仅免费而且开源,能够自由地进行对软件拷贝、浏览源代码、对它做出一些改变,也可以把它的其中一部分用在其他的地方,比如用在自由系统中。而且大部分的Python程序可以在多种计算机平台系统上运行。本次设计我选用的Python版本是在Anaconda3虚拟环境下的Python3.7。Anaconda3是一个Python的发行版,它强大的兼容性使得它同样也支持本次系统开发用到的Windows7系统。Anaconda3提供了对多种包的管理和对一些虚拟环境的管理功能,运用Anaconda3能够很方便地解决在各个虚拟环境下的多版本Python并存,还可以解决包括这些虚拟环境及相应Python版本之间的切换以及各种第三方包的查询和安装等相应问题。Anaconda3可以使用其自带的AnacondaNavigator或者在终端命令行运用conda来进行对包和虚拟环境的建立、下载及管理等操作,Anaconda3安装过后就已经默认包含了很多包文件以及Python的相关工具,因此Anaconda3完全可以理解为一个打包的聚合,里面已经预装好了需要的conda、Python3以及相关的配套包和工具等等。5.1.2Pycharm本次的IDE我选择了深度学习必不可少的工具Pycharm,Pycharm本身就带有一整套的工具和环境,在实际操作中可以帮助程序员在使用Python语言相应框架进行开发时提高其效率,可以说算得上是当今使用最广泛的PythonIDE,,它的功能主要体现在包含Project管理、语法高亮、调试、代码跳转等等。此外Pycharm还提供了一些很的简洁易懂的功能用于Django开发,本次系统的前端也是在Pycharm下运用Django框架和H5前端共同编写的界面,下面会在Django部分介绍其详细设计过程。5.1.3DjangoDjango是可以使Web开发工作变得高效率的框架,提供了频繁进行编程作业的快速解决方法,本系统界面设计主要运用MVC模式。其中models.py文件主要是用类来描述数据,可以通过该文件来建立和修改数据库中的表;views.py文件包含了页面展示调用的函数以及相应的函数逻辑,通过views.py文件可以对路由和H5前端页面进行连接,比如在views.py文件中定义的Def后的Request函数名写进路由页,而函数的Return值可以返回一个Html页面;urls.py指出定义了怎样的URL调用什么样的视图。上述这些部分遵循的模式称为模型-视图-控制器模式(MVC)。5.1.4SQLiteSQLite是一个C语言库,它实现了一个小型、快速、独立、高可靠性、全功能的SQL数据库引擎。SQLite内置于所有手机和大多数计算机中,捆绑在人们每天使用的其他应用程序中,是世界上使用最多的数据库引擎。其文件格式稳定、跨平台。SQLite数据库文件通常用作在系统之间传输丰富内容的容器,并作为数据的长期存档格式。其源代码在公共域中,每个人都可以出于任何目的自由使用。5.1.5Keras停车场自动收费及管理系统的车牌识别的功能想要实现,最基础也是最核心的技术就是搭建一个关于车牌识别的卷积神经网络模型,现在很多支持Python语言的深度学习框架都能够完成。本次模型我选择了当下很流行也非常稳定的开源程序框架Keras。Keras是纯粹由Python编写而成的框架,我们也可以理解它为是高层的神经网络API,它支持快速实验,拥有可扩充性、高度模块化、和简单易上手等特征;Keras是基于Theano、Tensorflow以及CNTK后端,再次基础上它比起Tensorflow拥有更强的封装性,而且Keras能够无缝进行CPU和GPU切换。其简洁、高效、易学的原型设计可以同时支持CNN和RNN,还支持二者的结合。由于Keras框架在Tensorflow基础上完成了再一次的封装,令搭建神经网络模型变得更加快捷简单,很适合新手学习,并且由于其相应部分的开源的特性,使用者也可以根据现实的需求更改源代码。5.1.6卷积神经网络想要识别一个车牌图片,其核心方法为分类算法。商场停车场自动收费及管理系统车牌识别部分的分类工作主要是靠卷积神经网络的全连接层来完成,而卷积层、激活层、池化层的工作都是为了输入到全连接层做准备,卷积神经网络模型虽然层数比较多,但是层数的种类只包括上述4种:1)卷积层卷积层的输入是一张二维的图片,卷积核工作在卷积层中,卷积核类似于一个小的像素滑动窗口,对输入进来的图像进行逐行扫描,滑动的步长为一个像素,一行接替一行扫描。每次扫描到一个位置时,根据卷积核内的n*n个权重值,对图片上的像素进行运算,例如如果卷积核大小是3*3,图片上扫描的像素也为3*3,把扫描到的位置上的像素值与卷积核上的权重值相乘再相加,得到这个卷积核对应特征图上的一个特征值。一个卷积核扫描完一张图片后,得到一个特征图。以上是一个卷积核的工作过程,在卷积神经网络的卷积层中通常会有多个卷积核,卷积核的数量就是特征图的数量,比如输入的图片(20,20,1),如果有32个卷积核,图片就变成了(20,20,32),32即为抽象出来的特征图的个数。图5-1卷积层工作原理1Fig.5-1Workingprincipleofconvolutionlayer1图5-2卷积层工作原理2Fig.5-2Workingprincipleofconvolutionlayer2综上,卷积层主要做两件事情,对图像特征的提取,减少参数,简化运算。2)池化层池化层的主要工作就是池化,它与卷积层的工作方式类似,都有一个在图片上滑动的滑动窗口,池化层连接在卷积层之后,所以池化层中的输入是一张经过卷积过后的特征图。池化的工作方式就最大池化方式来说,取池化核内的最大值,然后映射到池化输出图像一个像素点上。池化的步长与卷积核不同,卷积核的步长通常是1,有重复计算的部分,池化核的步长为池的大小,且直接移动到下一个位置,没有重复计算。图5-3池化层工作原理Fig5-3Workingprincipleofpoollayer综上,池化层主要的工作就是进一步降低数据规模,使特征图变小。3)激活层激活层实际上就是使用激活函数,激活层会被放置在卷积层和全连接层之后,在特征图生成过程中,很弱的特征不经过非线性处理,输出后后面的层会把它当作一个特征,有可能这种特征是背景颜色这样无意义的特征,这种毫无意义的特征在训练过程中会影响数据的分类。激活函数主要有Relu、Tanh等。4)全连接层 全连接层在卷积神经网络中起到的作用就是分类器的作用,把通过卷积层、激活层和池化层之后得到输出进行整合,进行图像分类,从而达到分类识别的目的。5.2管理员登录注册界面设计商场停车场自动收费及管理系统的管理员登录注册页面主要用于对普通管理员和超管进行对系统的权限验证,只有进行注册的管理员或者已经注册过的管理员,通过其唯一的用户名和密码才能进入系统。而普通管理员还需要通过超级管理员的审核才能登录,本部分的界面设计主要用到两个输入框可以分别输入用户名和密码,还有按钮可以进行确认和注册。大致的布局如下:图5-4登录界面设计图Figure5-4DesignofLoginInterface上图登录注册功能的具体操作流程大致为:管理员进入登录注册页面,对于第一次进入的管理员可以点击注册按钮进行相应信息的注册和录入;对于已经注册过的管理员可以直接在修改框中输入其唯一的管理员名称和对应的密码,点击登录按钮进入商场停车场车牌自动收费与管理系统的信息管理界面。而管理员的职位我也根据需要分为了普通管理员和超级管理员。其中普通管理员拥有的权限要比超级管理员的权限范围小一些,主要表现在普通管理员注册其信息以后要由超级管理员进入信息管理页面来进行相应的普通管理员资格审核,只有审核情况为“通过”的普通管理员才能通过正确而又唯一的名称和密码登录车牌及收费管理系统,否则将会显示“您正处于审核期”;而超级管理员和普通管理员进入的页面也不尽相同,超管的主页面主要为对普通管理员的管理,包括对其信息进行相应的修改删除以及对其资格的审核功能,超管页面还包括对内部车辆的管理和添加、对停车场总记录的查询。而普通管理员的权限仅限于控制车辆的进出和对停车总记录的浏览。在此部分我还设定了超管可以通过超管主页的操作转换为普通管理员。如果普通管理员还没有注册信息,则可以点击注册进入注册页面,大致布局如下:图5-5注册界面设计图Figure5-5DesignofRegistrationInterface在上图注册功能的具体操作流程大致为,想要注册的普通管理员可以进入上图页面进行信息添加,用户名一定是字母或数字组成,两次输入的密码要保持一致,否则会报错,年龄默认为1-100,点击注册则将信息录入数据库的普通管理员信息表中,等待超级管理员审核,如果审核通过则可以通过注册的管理员名称和密码进行登录。5.3超级管理员信息管理界面设计商场停车场自动收费及管理系统内部存储着本商场的内部车辆的相关车辆信息,而且还有车牌识别后的进出时间等信息。在数据库方面,由于这些信息只对超级管理员开放,只有超级管理员才可以管理这些数据,进行删除、修改和总览等操作,所以需要联系数据库进行信息管理的界面显示。在此界面中,需要有对车牌信息的修改,添加和删除功能,用户通过按钮可以进入相应的更新界面进行操作。粗略的界面如下:图5-6车辆信息管理界面设计图Figure5-6DesignofVehicleInformationManagementInterface上述内部车牌信息管理功能的具体操作流程大致为:超级管理员进入内部车辆信息管理页面之后可以总览所有的内部车辆信息,对于想要修改的信息点击其对应的表格后方的修改按钮进行任意项的修改,进入修改界面后对想要修改的任意项进行改写;如果想要执行删除功能即点击想要删除的车辆信息后方对应的删除按钮,直接删除该条信息所有内容。图5-7普通管理员管理界面设计图Figure5-7GeneralAdministratorManagementInterfaceDesignDiagram上述普通管理员信息管理功能的具体操作流程大致为:超级管理员进入普通管理员信息管理页面之后可以总览所有的内部车辆信息,对于想要修改审核信息的点击其对应的表格后方的修改按钮进行修改,进入修改界面后对想要修改的任意项进行改写。其中包括改写普通管理员的认证资格;如果想要执行删除功能即点击想要删除的管理员信息后方对应的删除按钮,直接删除该条信息所有内容,即驳回该管理员的管理申请。5.4车牌信息识别界面设计图5-8车牌识别界面设计图Figure5-8DesignofLicensePlateRecognitionInterface对于上述管理员车牌识别功能的操作流程大致为:管理员从本地图片文件夹选择想要识别的车牌图片,之后点击识别按钮,可以通过跳转到卷积模型识别出车牌号的字符串并输出;输出的字符串即车牌号,显示在上图的“车牌号为:”后边。在输出相应车牌号后,如果点击“进入停车场”,则将入场时间记录到商场的停车场总记录中;此外如果选择“驶出停车场”则将识别后的车牌号字符串与内部车辆信息的车牌号进行逐一比对,以便在该车驶出过程中,如果车牌内部信息数据库有该车牌的相应信息则显示该条信息并将驶出时间写入数据库,如果没有比对相同信息,则记录出入时间到数据库的同时计算出应该缴纳的金额。界面布局大致如下:图5-9停靠车辆界面设计图Figure5-9InterfaceDesignofParkingVehicles5.4.1车牌分类及收费功能流程图图5-10停车场入口管理流程图Figure5-10Parkingentrancemanagementflowchart停车场入口管理流程图说明如下:想要停车的车辆到达停车场入口后停车场自动收费及管理系统可以自动识别车辆的车牌号码并用字符串显示出来,对于在黑名单里的车辆实现直接报警或响起警报器功能;其余的车辆则可以由普通管理员手动放行进入停车场,放行的同时将车牌号码和进入时间的信息写进数据库的停车场进出情况总记录中。图5-11停车场出口管理流程图Figure5-11Parkinglotexitmanagementflowchart停车场出口管理流程图说明如下:停车场内车辆到达停车场出口后停车场自动收费及管理系统再次进行识别并显示车辆车牌号码,根据数据库里的商场内部车辆信息来对车辆的分类做出判断。对于商场内部的车辆直接放行不收费,同时把车辆的出场时间等信息保存到数据库的停车总记录表中;如果判断为外来车辆,则按外来车辆停靠时间的收费规则进行相应的收费,收费后普通管理员进行手动放行,同时系统将出场时间和收费金额等信息保存到数据库的总记录表中。
6、系统实现6.1代码规则源程序代码最好要通俗易懂、有必要的注释、逻辑简单清晰,这是好程序的其中几个标准。程序的编写最好要包括恰当的标识符以及适当精简的注解等,这样无论是本专业人员还是非本专业人员都能对代码有一定的理解和认识;数据和代码说明的次序应该按照数据结构或数据类型来确定,这样在有环节测试出错时可以精准的定位到需要完善的代码部分。运用掌握更为熟练的语言在编码部分遇到的困难会比较少,可以省去大量时间与精力,并且可以编出更容易更新和更容易维护的源程序;在语句构造方面应尽量减少比较繁琐复杂的条件测试,以避免读代码时出现逻辑混淆,也要避免大量使用循环和条件嵌套;在输入输出方面应对正常和异常的数据类型都进行一定的处理,同时保持输入内容的简单精炼,输出形式简单简洁等。6.2代码标准1)需要满足停车场车牌识别及收费系统的收费管理员的要求。2)编译编写的程序需要满足可以使用的规则。3)根据工程的规模进行调整。4)程序员的知识可读懂校验。5)代码具有可移植性、标准化等要求。6)软件的应用范围应该广泛的或是有特定针对性的。6.3系统功能实现商场停车场自动收费及管理系统的主要功能实现是通过Django框架联系Html所构建的Web网页的前端显示,通过对模型及库函数等的调用和代码的编写编译,调试出可实现的系统功能,主要包括超级管理员的登录和普通管理员的登录注册功能;超级管理员对商场内部车辆和普通管理员信息的审核、修改、删除和维护功能的实现及前端Web展示;普通管理员对车辆的放行管理;管理员对停车场进出情况及收费情况的总浏览功能及页面实现。6.3.1登录注册界面实现通过使用Django和HTML以及Sqlite3数据库,编写出了简洁好操作的Web界面,其中登录注册界面的实现及效果截图如下:图6-1登录界面截图Figure6-1ScreenshotofLoginInterface在登录注册界面,已经审核“通过”的普通管理员和超级管理员可以通过其管理员名称和密码进行登录。如果没有输入任何信息点击“登录”按钮,则在登录框的提示小灯泡后方显示:用户名密码不能为空;当管理员输入的用户名和密码有任一错误时,则提示小灯泡后方显示:用户名/密码不正确;如果还在审核期间的普通管理员用其用户名和密码登录,则提示:您还处于审核阶段,请耐心等待;而超级管理员可以直接通过正确的验证后进入系统,不会显示审核提示。图6-2普通管理员注册界面Figure6-2GeneralAdministratorRegistrationInterface在注册界面,想要注册的普通管理员可以通过点击登录界面的“立即注册”字样即可进入上截图页面。由上截图所示,想要注册的普通管理员可以填写相应的管理员信息来注册普通管理员。在注册操作中,注册者填写的用户名为3-18位由数字、字母、下划线和减号等构成的,易于登录时的输入操作;填写的用户密码和确认密码要一致,否则会弹出提示框;年龄的输入值定在1-100之间,如果不填则默认为1,当然年龄如果不符则审核过程则会更加漫长。在全部信息添加完成后可以点击“注册”按钮,之后跳转到注册成功页面。图6-3普通管理员注册成功界面Figure6-3GeneralAdministratorRegistrationSuccessInterface普通管理员注册成功后,直接跳转到上述页面,之后点击“登录”,可以回到登录界面,但刚注册的信息由于超级管理员还没有通过审核,故不能直接登录。6.3.2实现车牌分割商场停车场自动收费及管理系统在实现车牌分割即车牌图片按字符分割的过程中,我选择了现在较为流行也很适合新手的Python语言对其进行编写和实现。为了编写代码的方便和简洁,我使用的是Anaconda3下的Python3.7和Opencv3的方式,分割的具体原理为:本地调用的车牌图片由于多是蓝白两色构成,所以说每个像素点都是由RGB定义的。在这种时候就很难区分哪里是背景图和车牌字符图,所以就需要对车牌图片进行一些颜色上的处理,我选择的方法就是将车牌图片灰度化,也就是把每个像素的RGB都变成灰色的RGB值即R=G=B的。因为OpenCV有封装好的函数,在我的代码中体现为:img_thre=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY),通过这个函数就可以将图片进行灰度化了。灰度化后为了便于计算机的识别我们要将灰度化的图片进行二值化,刚才的第一步灰度化就是为了把每个像素转变成0或1的数字;每个像素的RGB值都相等了,那么将这个值称为灰度值,我们大致假设一张灰度化后的车牌图片中,其背景的灰度值大约集中在190左右,而车牌号字符的灰度值大约集中在30左右,经过几次实践之后我规定了一个较为合适的中间值129,小于129的像素点就将其全部记录为0,大于129的像素点就全部记录为1,通过阈值的划分就实现了二值化,其具体函数也封装在opencv3的库中,我的代码中体现为:cv2.threshold(img_gray,129,255,cv2.THRESH_BINARY,img_thre)。对于车牌字符的切割我选择的方法大致是经过二值化的车牌图片现在已经看成是一个0-1的矩阵了,其中我规定arg=True,即其中黑色像素作为背景,而白色像素作为车牌字符,从而可以用每一列的0-1总数来分类切割。为了更好的测试,我选定的本地车牌图片几乎水平,且几乎没有噪点,之后将每一列的1值和0值分别统计起来。代码如下:white=[]#每一列的白色像素总和black=[]#每一列的黑色像素总和height=img_thre.shape[0]width=img_thre.shape[1]white_max=0black_max=0#计算每一列的黑白色像素总和foriinrange(width):s=0#这一列白色总数t=0#这一列黑色总数forjinrange(height):ifimg_thre[j][i]==255:s+=1ifimg_thre[j][i]==0:t+=1由上述代码我们我们已得到每一列的黑白像素的情况,之后我根据0-1总和的变换来切割字符。所以就定义了一个分割字符的函数deffind_end(start_),分割字符代码大致如下:deffind_end(start_):#分割图像end_=start_+1forminrange(start_+1,width-1):if(black[m]ifargelsewhite[m])>(0.95*black_maxifargelse0.95*white_max):#0.95是根据我选取的本地车牌图片的情况来调整的end_=mbreakreturnend_arg=True#arg=False则表示白底黑字;反之则表示黑底白字ifblack_max<white_max:arg=False通过上述代码我们就实现了对一个本地车牌图片进行图片的分割处理,将其统计像素点之后进行统计分割,得到的是车牌字符串分割后的单个字符,例如:图6-4车牌分割效果图Figure6-4LicensePlateSegmentationEffectMap6.3.3实现车牌识别及卷积模型的调用根据上述6.3.2介绍所得出的分割后的字符,我将其保存在相应的文件夹中,之后为了让其更好的输入模型中,我由通过Opencv3中的Resize函数对图片进行了格式像素的改变,以便它可以输入模型进行识别。在车牌分割识别页面的实现中,我设置了可以打开本地文件的功能,通过该功能可以获取本地图片的路径,得到路径后通过load.models函数在views.py文件中运用Keras框架对识别模型进行加载和调用。图6-5选取识别车牌图片界面Figure6-5SelectionandRecognitionofLicensePlatePictureInterface由上截图所示,点击“选择文件”按钮,即可弹出截图所示的本地文件夹,在文件夹中选取想要识别的车牌图片,点击图片后点击“打开”按钮,之后界面会显示图片的路径,此时点击“识别”按钮,就会将图片的路径传到分割识别代码中,识别完成后显示如下页面:图6-6车辆放行管理界面Figure6-6VehicleReleaseManagementInterface由上截图所示,通过调用车牌识别模型将选取的图片进行分割识别后显示在上述页面的“车牌号为:”之后;通过识别后的车牌由管理员判断是进入停车场还是驶出停车场。点击“进入停车场”按钮则跳转到数据库录入界面。点击“驶出停车场”按钮则对车牌进行分类进入不同界面,如果为外部车辆则进行相应收费,如果为内部车辆直接放行。图6-7车辆进入停车场界面Figure6-7VehicleEntryParkingInterface上述截图可以看出,这是管理员选择了“进入停车场”按钮后对车牌信息进行数据库的录入,点击“主页”则进入普通管理员管理主页,点击“总记录”则进入停车场停靠记录页面,同样的,对于驶出停车场的车辆也会进行相应的分类和界面展示,其截图如下:图6-8内部车辆放行界面Figure6-8InternalVehicleReleaseInterface图6-9外部车辆收费界面Figure6-9ExternalVehicleChargingInterface6.3.4数据库信息实现图6-10停车场车辆停靠记录管理界面Figure6-10ParkingRecordManagementInterface上述截图是普通管理员和超级管理员都能进入的记录查看页面,两者都可以对停靠记录进行查验,而没有权限进行更改和删除。图6-11内部车辆信息管理界面Figure6-11InternalVehicleInformationManagementInterface图6-12内部车辆信息添加界面Figure6-12InternalVehicleInformationAddingInterface图6-13内部车辆信息修改界面Figure6-13InternalVehicleInformationModificationInterface上述三张截图展示的是超级管理员对商场内部车辆的管理和更新功能,即可以进行增删改查等操作。图6-14普通管理员管理界面Figure6-14GeneralAdministratorManagementInterface上述截图是超级管理员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 白酒销售2025年度工作方案
- 2025年疫情应急管理工作方案
- PHP程序设计项目化教程(微课版) 课件全套 臧金梅 项目1-7 启程探索PHP世界-学生信息管理系统
- 2025年学校学雷锋活动策划方案
- 《电子技术项目化教程》课件 项目三 温度控制器的制作与调试
- 《PHP开发技术》考试题(4)及答案
- PHP程序设计项目化教程电子教案15 问卷统计器-文件和目录操作
- 2025年电动吊飞圣诞老人项目可行性研究报告
- 2025年照相机闪光线路板组件项目可行性研究报告
- 云南省江川第二中学2025年高三下学期第三次月考英语试题文试题含解析
- (2023年度)中央厨房、集体供餐配送单位食品安全全项目自查记录表
- 土的渗透性完整版本
- 强化业务运营管理优化业务流程的工作总结及计划
- 猕猴桃果酱制作方法
- 逆变器行业营销策略方案
- 国民经济行业分类与代码
- 网络互连技术-管控IP数据通信ACL(访问控制列表)
- 幼儿园故事课件:《狼来了》
- 小学英语公开课The-Hug课件
- 第十章 思想政治教育的方法和艺术
- 碱柜治超大队检测站应急预案
评论
0/150
提交评论