




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要科技的进步以及人民自身的生活水平的不断提高,使得人们对于日常的出行需求变得不断增长。汽车作为最常见的交通工具已经越来越成为人们最初的选择。大量新的车辆在不断地投入到道路中使用,而以传统的人工方式对汽车车辆的管理也变得愈加困难。因此,使用计算机来代替人来处理相对繁重的工作是必要的。一个良好的交通管理系统是实现道路管理的基础。想要对于汽车车辆进行管理,最有效的识别特征之一便是汽车的车牌,作为目前最常见的使用技术,车牌识别广泛应用在交叉路段、停车场、收费站等各种场合的监控与管理之中。所以需要相应的技术来完成以上的需求。本文以python为使用语言,OpenCV为主要工具,通过输入带有汽车车牌的图像,根据车牌所特有的一些特征,垂直投影法、SVM的方法来完成对于汽车车辆的车牌定位、车牌的字符分割以及字符识别功能。最终将所识别到的车牌字符输出显示出来。关键词:OpenCV;投影法;SVM;车牌识别AbstractTheadvancementofscienceandtechnologyandthecontinuousimprovementofpeople'sownlivingstandardshavemadepeople'sdailytravelneedscontinuetogrow.Asthemostcommonmodeoftransportation,carshavebecometheinitialchoiceofpeople.Alargenumberofnewvehiclesareconstantlybeingputintouseontheroad,andthemanagementofautomobilevehiclesbytraditionalmanualmethodshasbecomeincreasinglydifficult.Therefore,itisnecessarytouseacomputerinsteadofapersontohandlerelativelyheavywork.Agoodtrafficmanagementsystemisthefoundationforroadmanagement.Oneofthemosteffectiveidentificationfeaturesforthemanagementofautomobilevehiclesisthelicenseplateofthecar.Asthemostcommonlyusedtechnologyatpresent,licenseplaterecognitioniswidelyusedinmonitoringandmanagementofvariousoccasionssuchasintersections,parkinglots,tollstationsIn.Therefore,correspondingtechnologyisneededtocompletetheaboverequirements.ThisarticleusespythonasthelanguageandOpenCVasthemaintool.Byinputtinganimagewithacarlicenseplate,accordingtosomecharacteristicsuniquetothelicenseplate,verticalprojectionandSVMareusedtocompletethelicenseplatepositioning,charactersegmentationandcharactersofthecarlicenseplate.Recognitionfunction.Finally,therecognizedlicenseplatecharactersaredisplayed.Keywords:OpenCV;SVM;projectionmethod;LicensePlateRecognition目 录TOC\o"1-4"\h\z\u第一章绪论 绪论选题背景与意义1.1.1选题背景随着人们的生活水平的不断提高以及对日常出行需求的不断增长,汽车成为越来越多人出行所选择的交通工具。汽车行业和公共交通的迅速发展,汽车已经逐步走入千家万户之中。伴随着汽车数量的迅速增长,道路交通的管理需求也不断扩大,道路管理中的一些问题也逐渐显示出来。大量汽车投入到交通之中,道路疏通,车辆管理等问题依靠传统的人工方式所付出的财力、物力以及时间成本也越来越高。现代计算机及网络的发展使得利用计算机代替传统的人工方式来对车辆进行管理变得可行起来。车牌作为汽车最显著的身份特征,是现在选定特定车辆目标的最主要手段之一,因此如何从监控或其它汽车相关图片之中处理分析识别出车牌号码是现代车辆管理中至关重要的一节。通过车牌识别的技术,实现对车辆的自动化管理方式是未来交通发展的趋势。1.1.2选题意义对与车辆的行为管理最主要依靠方式之一则是以车牌号码所对应的车辆信息进行录入。所以对车牌识别的实现对此有着重要的意义,借此可以运用在道路交叉路口、各处的停车场、加油站、高速公路的收费站、ETC等多种场合之中。车牌识别通过汽车图像获取车牌号码,实现高效率低成本的智能化管理方式,有效的节约各类成本。车牌的字符识别本子上其实是通过对车牌上的数字、字母与汉字进行一定区分对比之后,将获得到的结果以计算机中字符串的形式展现出来,而字符得识别中,汉字的识别表现得最困难,主要原因在于汉字是我国专用的,这就导致了很多国外的先进的车牌识别系统大都不能够适用于我国。本次选题是为了更好的运用现代科技及网络资源来达到国内车牌的车牌识别。国内外研究现状由于识别系统在各个领域之中的火热崛起,对与车牌识别的系统在国内外也有不算少的相关研究。车牌识别的技术在国外起步较早,之后再国内也开始跟上。1.2.1国外研究现状车牌识别最先是由国外所发起的,无论是研究时间还是先进性都较于领先我国。在二十世纪的中后期,国外就已经开始了对车牌识别算法的研究,并且根据这些算法设计了汽车牌照识别的软件,在实际生活中进行了应用,取得了很好的效果。有着许多人员在这片领域之中投入了大量的资源开展实验和总结。在国外的部分国家之中,例如德英日意以及加拿大这几个国家,早在上个世纪的后期就已经把这种技术研究发展得很成熟了,也提出了大量关于车牌的检测识别方面的高技术方法,并且已经开始在市场上投入使用,虽然说他们的方法不大一样,但是对于这项研究也投入了大量的精力和资金[1],许多国家都有着不错得成果展现。如以色列得Hi-Tech公司所推出See/Car系统,通过视觉传感器获得车辆车牌信息对车辆管理效果显著;新加波的OptAsia公司的VECON-VIS车牌识别系统,据说准确度也相当高;以及著名的日本的LUIS车牌识别系统[2]等等。1.2.2国内研究现状 车牌识别的技术虽然在国外起步较早,但之后再国内也开始跟上步伐。在早期是用一些较为零散的图像处理方法来应用与车牌识别之中,之后逐渐形成系统般的方法。因为我国的车牌与国外的车牌有着较大差异,所以对于国内的车牌识别方法大都无法直接使用国外的研究技术。虽然无法直接使用国外相对要成熟的技术,但是其中的方法与思想却是仍然有非常多值得去向其借鉴的地方。在2018年11月份,公安部所发布的汽车保有量已达到了2.35亿辆,同比约增长12.0%,其中新能源车101万辆,同比增长83%[3]。新能源车和普通车的使用量日益增多,智能交通识别变的越发困难。为了解决这一现状,我国相关的研究人员在二十世纪九十年代开始逐步地探索研究汽车车牌照的识别技术。虽然我国的车牌识别虽然要较晚于其他国家,但是在我国大量的研究人员的努力之中,仍然可以看到一系列效果优异的研究成果存在。例如在众多我国相关的研究人员中,胡雪会,王波涛[4]等各研究人员利用OpenCV作为使用工具提出了一种改进的灰度跳变的车牌定位算法,有效的提高了车牌定位的准确率。黄社阳,刘智勇,阮太元[5]等研究人员则是提供了另一种方法,提出了一种基于HSV颜色空间和SVM相结合的车牌提取算法。该方法对多种车牌能够实现较好的精确定位与提取。甘玲,林小晶[6]等研究人员是在字符的分割上提出了一种改进过的连通域提取车牌字符的分割算法,对字符的分割变得相对更加的准确、稳定。 近些年来,人民生活水平的富裕,车辆的拥有人数飞快上升,车牌识别的相关技术在我国也变得愈加重视。除去交通领域内的研究人员、研究公司的不断深入研究,学术、教育领域的人员也越来越多开始对此领域开始了自己的研究工作。1.3课题研究目标 车牌号码的识别方面,在以前,传统的解决的方法是分为了字符的分割和字符的识别两个阶段来实现。如今大都分为车牌定位、字符分割、字符识别三个阶段。本文以OpenCV为基础,能够较为准确的定位到带有汽车图像的汽车车牌区域。将定位到的汽车车牌区域的图像进行处理切割为单个字符的图像,最后将分割后的各个字符图像能够较为正确的识别处理。即以下的几个目标:如何实现车牌的定位功能:对车牌识别系统的基本功能,车牌定位功能进行设计。通过对车牌的基本特征分析进行车牌位置的定位。如何实现车牌号码的字符分割功能:通过垂直投影法,对车牌图像字符间隔之间的特征进行分析,实现将一副图像中的各个字符给分割成一个个单独的字符图像。实现字符识别功能:通过OpenCV的sample函数,对字符图像进行处理并识别出字符。整体实现对车牌号码的识别完成上述功能。2车牌定位2.1车牌特征车牌号码是在机动车前后两面分别悬挂着的板材,各国之间使用的材质各不相同。在车牌上会登记显示着车辆的登记地区、号码或者其他的基本相关资料。各国之间的车牌外观、材质和内容之间都有些各自的区别及特征存在。想要准确的定位到车牌所在区域,车牌的特征是车牌定位的关键信息,车牌的识别技术在各方面大多要依靠车牌自身所特有的一些特征来进行分析。以一般我国的车牌来说,首先,在车牌的外观上,一般的车牌都是长方形的形状,并且在长度与高度上都有着统一的标准规定;其次,在车牌的字符上,字符由左到右依次排列,通常情况下第一个字符为汉字,第二个字符为英文字符,各个字符的大小都是由统一的规定,各个字符之间的间隔大小也是相同的;最后,在车牌颜色上看,我国的车牌颜色不同与外国,呈多种颜色,如最常见的目前是普通的小型客车的蓝底白字与最近几年迅速发展的新能源汽车的绿底黑字。它们的车牌底色与字符颜色通常不一样,切相差较大,使得在计算机处理及灰度图上会有一些较明显的变化。车牌定位方法大致有几种,第一种是通过形态学处理和车牌的颜色特征的方法;第二种为根据车牌的形状特征为基础的定位方法,根据车牌的矩形特征和矩形的长宽比来进行;第三种方法是基于Lab的颜色模型和聚类分割以及车牌的性质特征的定位方法[7]。目前本文所使用的车牌定位最主要依靠两点进行。其一为颜色,在我国,最常见的车牌的颜色特征大致可以分为几类,主要由大型汽车车牌的黄底黑字,普通小型汽车的蓝底白字以及在最几年开始广泛使用的新型能源汽车车牌的绿底黑字。其二为车牌的尺寸、字符特征,车牌第一个字符为省、自治区、直辖市的汉字字符简称,第二个字符为发牌机关代号(通常为英文字符),之后为英文数字之间混合组成的字符。各个字符之间隔,整体车牌的长宽比等车牌尺寸的细节特征如下图2.1的标准车牌尺寸图所示。图2.1标准车牌尺寸图 因拍摄角度,外界的各种干扰因素,实际所获得到的汽车图像的尺寸特征并不会严格如图2.1一般,各标准之间会有一定的小范围内变化。下面大致介绍具体的定位流程。2.2定位流程 定位的大致流程如下图2.2定位流程图所示:图2.2定位流程图 对图像的预处理部分,首先对输入的汽车图像使用高斯滤波去噪,使图像变得平滑去除部分噪声。再将图像转化为灰度图并进行图像的二值化处理。在OpenCV的Python接口(以下均默认为Python的接口)中分别对应GaussianBlur()、cvtColor()、threshold()函数。经过预处理后的二值化图像大致如图2.3所示。图2.3二值化图像部分代码如下:src_img=cv2.GaussianBlur(pic,(3,3),0)#高斯模糊img=cv2.cvtColor(src_img,cv2.COLOR_BGR2GRAY)#转换成灰度图ret,img_thresh=cv2.threshold(img_open,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#二值化图像通过对图像的一些基本的预处理方式可以明显的突出图像的一些基本特征,将图像的明亮与较暗的区域明显的给划分出来,使较明亮的区域变得更加明亮,在灰度图之中即变白,较暗的部分变得更加暗,在灰度图之中呈现更黑。方便之后的进一步操作。 接着对处理过后的图像进行边缘检测,在OpenCV中为使用Canny函数。通过边缘检测,能够将能够获取图像的边缘轮廓,再通过开闭运算能够使相近区域的轮廓变为一个整体。所谓开运算,是先进行腐蚀再进行膨胀就叫做开运算,可以用来去除噪音,而闭运算则是先进行膨胀再进行腐蚀操作,可以用来填充前景物体上的小黑点。腐蚀单个操作能简单的去除白噪声也能将两个连在一起的物体给断开来,而膨胀可以用来连接两个分开的物体。因此,通过开闭运算我们能够消除一些噪声的干扰并获得各个部分的填充区域的轮廓图形,大致如图2.4所示。图2.4轮廓图像部分代码如下:img_edge=cv2.Canny(img_thresh,100,200)#边缘检测#使用开运算和闭运算让图像边缘成为一个整体kernel=np.ones((4,19),np.uint8)img_edge=cv2.morphologyEx(img_edge,cv2.MORPH_CLOSE,kernel)img_edge=cv2.morphologyEx(img_edge,cv2.MORPH_OPEN,kernel)通过使用findCountours函数将获取的图像为参数输入可获得各个轮廓的边界点坐标与旋转角度。通过我们对车牌尺寸的长宽比(大致为2-5.5左右)以及设定默认最小图形面积信息可以从这些图形之中进一步地筛选出符合条件的图形区域。在获得符合条件的轮廓图形之后,根据之前所获得到的轮廓角度对图形进行矫正。 如上图2.4所示,我们所获得的轮廓图形不一定都是相对与图像水平平行的,大致多多少少都有一定的倾斜角度。为了后续操作的方便即顺利进行,我们需要对获得的符合条件的轮廓图形进行一定的倾斜矫正。通过之前findCountours函数所收集的轮廓信息中,带有轮廓的倾斜角度的一些信息。首先,我们根据OpenCV中的boxPoint函数,将获得的轮廓作为参数输入可以获得该轮廓的四个顶点坐标数据。根据这四个坐标,选取该轮廓区域图形的左右上下的最值顶点数据。再根据左右最值的顶点坐标,我们可以根据左右的坐标Y的差值,可以判断出该区域图像是向左倾斜或是向右倾斜。经过图2.3观察,可以发现,虽然车牌本身有一定的倾斜角度,但是其字符本身并没有受到太大的干扰,也就是字符本身并没有受到倾斜的影响。因此,我们选则使用warpAffine函数,选择使用平移原始图像操作而不是使用旋转原始图像的操作来避免一些对车牌字符的干,通过传入原始图像的左右与上方顶点坐标与新的左右与上方顶点坐标参数实现。矫正后的矫正图像大致如图2.5所示。图2.5矫正图像部分代码如下:pts1=np.float32([left_point,high_point,right_point])#原坐标ifflag==1:#正角度根据左右顶点判断pts2=np.float32([left_point,high_point,new_point])#新坐标else:#负角度pts2=np.float32([new_point,high_point,right_point])#新坐标M=cv2.getAffineTransform(pts1,pts2) dst=cv2.warpAffine(src_img,M,(pic_width,pic_height))#平移图像矫正之后根据之前的各个符合条件的轮廓坐标信息从矫正后的图像单独截取出该部分。之后将截取出的图像转换为HSV模式,统计颜色信息。 HSV色系即代表色调(H),饱和度(S),亮度(V)。能够更直观的表示图像颜色信息。 通过迭代截取的整个图像的HSV数值,统计黄色(H大致在10-34左右),绿色(H大致在35-99左右)与蓝色(H大致在100-125左右)的数量信息可以依此判断出该截取出的轮廓图像是否为车牌区域以及车牌的底色是黄色还是绿色或者蓝色。最后在迭代图像的同时,记录下黄色、绿色或蓝色较少的边界可以对截取的图像进行再定位,缩小边界非车牌的范围。最后定位到的车牌区域图像如图2.6所示。图2.6定位区域图
3字符分割3.1切割方式 在获得比较精确的车牌定位区域后,开始进一步对获得到的图像进行字符分割。车牌的字符分割主要的作用是为了方便之后所要实现的识别功能。在准确的分割算法下,车牌识别能够获得较高的准确率,但分割算法要达到较高的准确率是比较困难的,其表现结果受光线强度、车牌扭曲等的影响较大,停车场的应用场景下车辆往往可以保持良好的“姿态”且距离采集设备较近,因此采用字符分割的方法可以获得优秀的识别效果,但对于无人机摄像头或交通摄像头来说环境会更加复杂[8]。现在,最常见最常用的分割方法为两种,一种是基于连通域的分割方法,另一种是基于车牌的投影图像的分割方法通俗来说即是垂直投影法。本文所采用的方法则是基于垂直投影的方法来进行。 垂直投影法是目前应用较多的字符分割的方法,其特点为比较简单且相对要容易实现。它是根据图像在垂直方向上的投影,(在车牌字符分割中,理想状态下只有在有字符的位置上垂直投影是有数值的,而字符与字符之间的间隙是为0的)车牌之间的字符是由一段间距存在的,因此根据投影之间的数值,可以判断出字符与字符之间所在的间隔位置,依此可以将字符之间给分割出来。在本文,分割方法的大致的实现步骤为,首先对车牌二值化图像进行逐行扫描,记录其数值的跳变次数。因为车牌之间的间距存在,车牌二值化图像的数值横向跳变次数基本是保持在一定的次数以上(因噪声的存在,图像预处理的不完善,字符有一定几率存在粘连等多种因素无法保证为固定数值)可以大致的确定上下边界。之后再对图像进行逐列的扫描,分别记录下黑白像素的数量值。根据数量值,我们可以设定一个较为宽松的阈值,通过修改阈值可解决一些字符粘连上的问题。3.2切割流程在使用垂直投影法进行车牌字符分割操作的流程大致如下流程图3.1所示。图3.1分割流程图首先是图像的预处理部分。为了之后的处理方便以及尺寸统一,先将传入的车牌区域图像尺寸修改为统一的长度与宽带(本文中暂时分别设为140,36)。归一化操作代码:img_resize=cv2.resize(img,(136,36),interpolation=cv2.INTER_AREA)之后同车牌定位流程部分的预处理大致相同,先是使用高斯滤波平滑图像去除噪声,再将图像转化为灰度图并二值化处理,需要注意的则是,与蓝色作为底色的车牌不同,绿色和黄色为底色的车牌字符颜色较暗而背景较亮,与蓝色车牌正好相反,直接对转化好的灰度图像进行二值化处理会使得背景部分为白色而字符部分会呈现黑色,并且通常带有大量的干扰因素不利于后面的处理。所以,根据之前车牌定位所得到的车牌颜色,若为黄色或者绿色,首先使用OpenCV中的bitwise_not函数对灰度图的数值先进行取反。大致效果图如下图3.2所示(更换测试车牌号,车牌底色为黄底)。图3.2车牌二值化图从上图我们可以观察到,因为车牌定位区域无法绝对精确到字符边界的原因以及车牌的边框存在,所获得到的图像四个边界一般通常的来说会存在一些干扰的条纹。左右边界的条纹可以分别将到1到4个像素值置0来进行预先的部分去除,但范围不应该设置过大,理由为若车牌定位功能因定位较准确时是会丢失掉一些字符信息。上下边界的干扰条纹可以逐行扫描图像根据图像字符的黑白像素的跳变次数来进行进一步的消除。我们可以从上图观察出,图像的黑白像素值的跳变次数从车牌本身的字符个数上看,至少也会跳变14次以上。因为会存在预处理不当或者原始的汽车图像本身的质量问题可能会导致字符与字符之间存在着粘连的问题,因此我们可以大致的默认设置为至少跳变10次以上来去除掉上下的干扰条纹影响。去除部分噪声后的图像我们假定为图像P。接着我们将原始输入的车牌区域图像再单独进行一次转化为灰度图像并进行二值化的处理,使用OpenCV之中的bitwise_and()函数将所得到的图像与图像P进行与操作,之后再将获得到的结果图像再进行一次上面所描述的记录跳变次数消除横向的干扰条纹操作,可以获得保留大部分字符信息同时有效地去除掉许多干扰的噪声。如下图3.3所示。图3.3去噪后车牌二值图部分代码如下:#消除上下跳变次数较少的条纹foriinrange(height):ifsum_changes[i]<10:#统计好的跳变次数若小于10forcolinrange(width):#将该行像素数值置0tmp_img.itemset((i,col),0)#与原图像的二值化灰度图相与,去除部分噪声img_gray_1=cv2.cvtColor(img_resize,cv2.COLOR_BGR2GRAY)#灰度图ifcolor=="green"orcolor=="yello":img_gray_1=cv2.bitwise_not(img_gray_1)#黑白颜色取反ret,img_thre_1=cv2.threshold(img_gray_1,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)cv2.bitwise_and(img_thre_1,tmp_img,img_thre)在获得到处理好的车牌图像之后,可以开始进行图像的切割工作。首先,我们对图3.3的图像进行逐列的扫描,记录黑白像素的个数。在此例中,白色像素的每列个数前20列为:[0,0,0,0,24,27,27,12,8,16,25,28,28,28,27,23,13,0,0,0];黑色像素个数前20列为: [36,36,36,36,12,9,9,24,28,20,11,8,8,8,9,13,23,36,36,36]。 接着设定一般分割的阈值S初值本文设定为0.90。之后开始遍历记录好的每列黑白像素个数,使用公式3-1确认切割起点,公式3-2确定切割终点不断更新起点与终点一步一步将字符分割出来。White[n]为第n列白色像素数量Black[n]则为黑色,whiteMax为白色像素数量最大一列的数值,36为最先归一化设定好的图像高度数值。White[n]>(1–S)*whiteMax (3-1)Black[n]>S*36 (3-2) 在处理好的图像之中有时会存在着一些字符粘连在一起的情况出现。这时可以判断切割终点与起点之间的距离是否过大判断字符是否粘连在一起。对于起点到终点距离过短部分,我们认为是车牌分割符或者其他干扰点,直接舍弃这部分。若存在粘连现象,我们可以再次从切割起点出发,通过逐步减小S的数值继续使用公式3-2来达到更进一步的精确分割,确保不会因为字符粘连的问题导致分割达不到预期的设想。分割结果如下图3.4所示。图3.4分割结果图切割部分伪代码如下:遍历图像长度:当白色像素个数大于阈值 ifwhite[n]>(1-S)*white_max: 设定起点start 从起点开始寻找终点 当黑色像素个数大于设定阈值 ifblack[i]>S*36: 获得终点索引end=i 判断终点距离起点如果太长或太短: 修改相应的阈值并重新寻找终点 根据获得的起点于终点分割出图像 img_cut=img_thre[0:height,start:end]自此,车牌分割到此基本完成,基于垂直投影的分割法可以基本达到了我们所预期的分割效果,成功的将车牌区域的字符给分割了出来。但是,这个方法在一定程度上有着一些不足之处,首先,对初始图像的质量要求要高一些,汽车图像本身的模糊,字符褪色问题,或者一些其他的外在干扰信息都可能会对分割效果造成影响;其次,对于图像的预处理,干扰噪声的去除要求也会相对高一些,若存在较多的干扰条纹,就会对投影结果产生影响,进一步则会影响到分割效果。对于前一点我们无法做出修正,因此对后一点需要稍微着重处理。
4车牌识别4.1字符识别方式 将车牌定位于车牌字符分割说做车牌识别整体的基石,那么字符识别的性能好坏也是直接关系到了整体车牌识别的成果。由于计算机的整体普及、计算能力的进一步发展以及大数据智能化的时代到来,字符识别的方法变得多种多样,各个方法之间得优劣各有千秋。例如基于字符特征的方法,基于模板匹配的方法、基于神经网络的识别方法与支持向量机法等等。基于车牌的特征统计方法是目前在车牌识别的应用中使用也是比较广泛的一种,这种方法主要是依靠在统计学之上的一种识别方法。在之前的车牌定位中,我们获得到了车牌的具体区域,在字符切割中得到了车牌的单个字符图像。最后,在本文中,根据现有的资源以及OpenCV中附带有的函数功能,本文中采取使用支持向量机的方法进行字符识别。 支持向量机,也被称为SVM,是一种能够构造出线性和非线性分类器的方法。作为一种二分类模型时,它的基本做法是求解出能够正确地划分训练数据集并且使几何间隔最大的分离决策面,此外SVM包括一种核技巧,可以通过核方法使它达到非线性分类器的效果。简单来说,SVM方法是基于结构风险最小化原理的统计学方法[9]。SVM分类器的优点在于它能够相对缩短时间复杂度,只需要进行一次模型的训练,对模型可以重复地进行使用。虽然这种方法有着许多优势,却也有着缺点存在,为了提高识别精度,需要大量的训练集当作样本,训练的时间以及对计算机本身的要求较大。4.2识别流程在OpenCV中提供了相应的训练的sample样例函数,仅仅是使用的话非常方便。OpenCV所附带的sample函数的本质为将灰度图、二值图、16值图的HOG特征在一定的权重下融合为联合HOG特征,使用核主成分分析法(KPCA)对联合HOG特征进行降维,进而利用支持向量机进行分类[10]。若需要训练模型,只需要通过cv2.ml.SVM_create()函数创建SVM类,将所需要训练的图片通过OpenCV中附带的sample样例转化为相应的格式后,再将转化好的训练样本图片以及图片的标签传入所创建的SVM类中的.train()函数之中即可。最后在训练完成之后,将训练好的模型保存至本地即可。由于设备以及无法获得足够的训练样本集,因此本文采用已经训练完成的sample模型作为字符识别模块使用。大致的流程如下图4.1所示。图4.1识别流程图 在图片预处理方面在舍弃掉上下黑边之后还需要做两点,首先将每个字符图像的四个边界可以缩小一个像素或者将其像素值给置0,如图3.4所显示的一般,分割出来的字符四周的边界也还是有可以能会存在干扰,处理过后若能消除影响则能进一步提高识别的准确率。此外,需要每个字符图片统一归一化为通过sample训练时的大小格式,也是有助于在之后调用时提高识别的准确率。在此例中格式为20*20。此外在改变图像尺寸的时候,图像本身是会变得一定的模糊化,如图4.2.1,图4.2.2所示。图4.2.1 模糊图 图4.2.2带干扰模糊图 经过一些简单的测试,这种一定程度上的模糊化的效果是有助于消除如图4.2.2底下干扰效果的影响的,也是对识别率有一定帮助,因此可以直接以此形式直接进行之后的操作。 获得处理好的图像后,创建SVM类实例,读取本地或者实时训练好的模型,将图像经过OpenCV的sample样例函数处理,最后调用实例的.predict()函数即可获得识别结果。部分代码如下所示:#modelchinese与model分别为获得到的汉字模型与英文数字模型card=hog([card])#将图片传入样例进行函数转换ifi==0:#第一个字符为汉字 resp=self.modelchinese.predict(card)ans.append(provinces[int(resp[0])-PROVINCE_START]) else:#其余为英文或数字 resp=self.model.predict(card)ans.append(chr(resp[0]))本例中识别结果如下表4-1所示。表4-1识别测试表测试车牌图识别结果 可以看出,识别的成功率基本是令人满意的,但是在汉字的识别上却有些令人遗憾的出错存在。分析后其主要原因可能在于两点,第一个原因是因为训练模型的原因。汉字的训练集本身不好寻找,不同于英文汉字在全世界范围内的流行,中文的汉字基本是我国所特有的文化,所以训练集所训练出来的模型本身的识别率有可能不算很高。第二点则是对图像的处理本身问题,从图3.4中可以看到,虽然汉字的字符图像周围虽然噪声消除的比较好,但是汉字的自身的特征也被处理而导致信息损失过多,从而导致了汉字的识别率会整体有所下均。
结论 本文所设计的车牌识别系统是在基于OpenCV为主进行开发的设计,尽力的运用了Python语言于OpenCV本身所提供的便捷性。汽车车牌的识别可谓是当今智能化交通发展道路上的基础技术,在本文所设计的一个简单的汽车车牌识别系统可以借由如今的各路计算机软硬件技术,为一些软硬件,如自动车辆门禁管理系统、高速公路的车辆管理、智能交通识别管理等主要在依靠汽车车牌进行车辆管理的场所提供一些基本的设计思路于解决方法。本文对车牌识别系统的背景、意义及现今的一些国内外研究现状的一些叙述表示,车牌识别在我国依然是拥有一定的意义存在。对于车牌识别的三部分重点,车牌定位、车牌字符分割、字符识别通过对车牌的尺寸特征、颜色特征、基于垂直投影的方法、SVM的识别方法,分别进行了一定程度上的概述并给出了一个较为简单的实现方法或思路,确定了本系统的基本完成。 虽然本文所叙述的汽车车牌识别系统设计基本成功,其成果也基本达到了预期要求,但是可以发现,因本人的知识水平有限以及设计不充分,本文的方法仍有着许多不足之处存在。如多车牌的应用场景没有设想多,在今后的交通发展,多车牌的场景必然频繁出现,其次目前只能识别黄、绿、蓝三种种类的车牌,而在我国肯定不只有这几种分类等多方面需要进行进一步改进。
参考文献[1]基于图像的车牌识别系统设计与实现,作者:唐智强,电子科技大学2018[2]车牌识别系统的研究与实现,作者:管文,湖北工业大学2018 [3]基于深度学习的车牌识别系统研究,作者:张佑贤,广西师范大学2019[4]胡雪会,王波涛.基于OpenCV的车牌图像定位[J].计算机测量与控制,2016,24(09):206-210.[5]黄社阳,刘智勇,阮太元.基于HSV颜色空间和SVM的车牌提取算法[J].计算机系统应用,2014,23(08):150-153.[6]甘玲,林小晶.基于连通域提取的车牌字符分割算法[J].计算机仿真,2011,28(04):336-339.[7]邓运生,郑晨霞,尹安.车牌定位和字符分割方法对比研究及实现[J].兰州文理学院学报(自然科学版),2019,33(06):78-83+106.[8]实时车牌识别系统的设计与实现,作者:刘洁,山东大学2019[9]余棉水,黎绍发.基于边缘与SVM的车牌自动定位与提取[J].计算机应用研究,2004(10):131-133.[10]殷羽,郑宏,高婷婷,等.基于联合HOG特征的车牌识别算法[J].计算机工程与设计,2015(2):476-481.
致谢 毕业设计的完成也意味着我的四年大学时光走向尾声,在这里我首先要非常感谢杨老师在学业等各方面对我的支持和帮助,在我的毕业设计从选题到设计再到实现与最后的文章编写都提供了许多宝贵的意见,此外还有所有曾教导过我的教师们,是你们给予的知识与经验让我能够成长进步。 另外我要感谢我的同学朋友们在这段时间内所带给我的帮助与鼓励,给我添加一份别样的动力使我前进。 最后,我还要感谢我的母校,为我们提供了一个良好的学习环境与氛围,使我在四年的学习生活之中受益匪浅。
HYPERLINK电脑快捷知识大全编辑本段一、常见用法F1显示当前程序或者windows的帮助内容。F2当你选中一个文件的话,这意味着“重命名”F3当你在桌面上的时候是打开“查找:所有文件”对话框F10或ALT激活当前程序的菜单栏windows键或CTRL+ESC打开开始菜单CTRL+ALT+DELETE在win9x中打开关闭程序对话框DELETE删除被选择的选择项目,如果是文件,将被放入回收站SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站CTRL+N新建一个新的文件CTRL+O打开“打开文件”对话框CTRL+P打开“打印”对话框CTRL+S保存当前操作的文件CTRL+X剪切被选择的项目到剪贴板CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置ALT+BACKSPACE或CTRL+Z撤销上一步的操作ALT+SHIFT+BACKSPACE重做上一步被撤销的操作Windows键+L锁屏键Windows键+M最小化所有被打开的窗口。Windows键+SHIFT+M重新将恢复上一项操作前窗口的大小和位置Windows键+E打开资源管理器Windows键+F打开“查找:所有文件”对话框Windows键+R打开“运行”对话框Windows键+BREAK打开“系统属性”对话框Windows键+CTRL+F打开“查找:计算机”对话框SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开word的时候按下不放,可以跳过自启动的宏ALT+F4关闭当前应用程序ALT+SPACEBAR打开程序最左上角的菜单ALT+TAB切换当前程序ALT+ESC切换当前程序ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板CTRL+F4关闭当前应用程序中的当前文本(如word中)CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前一个窗口)在IE中:ALT+RIGHTARROW显示前一页(前进键)ALT+LEFTARROW显示后一页(后退键)CTRL+TAB在页面上的各框架中切换(加shift反向)F5刷新CTRL+F5强行刷新目的快捷键激活程序中的菜单栏F10执行菜单上相应的命令ALT+菜单上带下划线的字母关闭多文档界面程序中的当前窗口CTRL+F4关闭当前窗口或退出程序ALT+F4复制CTRL+C剪切CTRL+X删除DELETE显示所选对话框项目的帮助F1显示当前窗口的系统菜单ALT+空格键显示所选项目的快捷菜单SHIFT+F10显示“开始”菜单CTRL+ESC显示多文档界面程序的系统菜单ALT+连字号(-)粘贴CTRL+V切换到上次使用的窗口或者按住ALT然后重复按TAB,切换到另一个窗口ALT+TAB撤消CTRL+Z编辑本段二、使用“Windows资源管理器”的快捷键目的快捷键如果当前选择展开了,要折叠或者选择父文件夹左箭头折叠所选的文件夹NUMLOCK+负号(-)如果当前选择折叠了,要展开或者选择第一个子文件夹右箭头展开当前选择下的所有文件夹NUMLOCK+*展开所选的文件夹NUMLOCK+加号(+)在左右窗格间切换F6编辑本段三、使用WINDOWS键可以使用Microsoft自然键盘或含有Windows徽标键的其他任何兼容键盘的以下快捷键。目的快捷键在任务栏上的按钮间循环WINDOWS+TAB显示“查找:所有文件”WINDOWS+F显示“查找:计算机”CTRL+WINDOWS+F显示“帮助”WINDOWS+F1显示“运行”命令WINDOWS+R显示“开始”菜单WINDOWS显示“系统属性”对话框WINDOWS+BREAK显示“Windows资源管理器”WINDOWS+E最小化或还原所有窗口WINDOWS+D撤消最小化所有窗口SHIFT+WINDOWS+M编辑本段四、“我的电脑”和“资源管理器”的快捷键目的快捷键关闭所选文件夹及其所有父文件夹按住SHIFT键再单击“关闭按钮(仅适用于“我的电脑”)向后移动到上一个视图ALT+左箭头向前移动到上一个视图ALT+右箭头查看上一级文件夹BACKSPACE编辑本段五、使用对话框中的快捷键目的快捷键取消当前任务ESC如果当前控件是个按钮,要单击该按钮或者如果当前控件是个复选框,要选择或清除该复选框或者如果当前控件是个选项按钮,要单击该选项空格键单击相应的命令ALT+带下划线的字母单击所选按钮ENTER在选项上向后移动SHIFT+TAB在选项卡上向后移动CTRL+SHIFT+TAB在选项上向前移动TAB在选项卡上向前移动CTRL+TAB如果在“另存为”或“打开”对话框中选择了某文件夹,要打开上一级文件夹BACKSPACE在“另存为”或“打开”对话框中打开“保存到”或“查阅”F4刷新“另存为”或“打开”对话框F5编辑本段六、桌面、我的电脑和“资源管理器”快捷键选择项目时,可以使用以下快捷键。目的快捷键插入光盘时不用“自动播放”功能按住SHIFT插入CD-ROM复制文件按住CTRL拖动文件创建快捷方式按住CTRL+SHIFT拖动文件立即删除某项目而不将其放入SHIFT+DELETE“回收站”显示“查找:所有文件”F3显示项目的快捷菜单APPLICATION键刷新窗口的内容F5重命名项目F2选择所有项目CTRL+A查看项目的属性ALT+ENTER或ALT+双击可将APPLICATION键用于Microsoft自然键盘或含有APPLICATION键的其他兼容键编辑本段七、Microsoft放大程序的快捷键这里运用Windows徽标键和其他键的组合。快捷键目的Windows徽标+PRINTSCREEN将屏幕复制到剪贴板(包括鼠标光标)Windows徽标+SCROLLLOCK将屏幕复制到剪贴板(不包括鼠标光标)Windows徽标+PAGEUP切换反色。Windows徽标+PAGEDOWN切换跟随鼠标光标Windows徽标+向上箭头增加放大率Windows徽标+向下箭头减小放大率编辑本段八、使用辅助选项快捷键目的快捷键切换筛选键开关右SHIFT八秒切换高对比度开关左ALT+左SHIFT+PRINTSCREEN切换鼠标键开关左ALT+左SHIFT+NUMLOCK切换粘滞键开关SHIFT键五次切换切换键开关NUMLOCK五秒QQ快捷键,玩QQ更方便Alt+S快速回复Alt+C关闭当前窗口Alt+H打开聊天记录Alt+T更改消息模式Ait+J打开聊天纪录Ctrl+A全选当前对话框里的内容Ctrl+FQQ里直接显示字体设置工具条Ctrl+J输入框里回车(跟回车一个效果)Ctrl+M输入框里回车(跟回车一个效果)Ctrl+L对输入框里当前行的文字左对齐Ctrl+R对输入框里当前行的文字右对齐Ctrl+E对输入框里当前行的文字居中Ctrl+V在qq对话框里实行粘贴Ctrl+Z清空/恢复输入框里的文字Ctrl+回车快速回复这个可能是聊QQ时最常用到的了Ctrl+Alt+Z快速提取消息Ctrl+Alt+A捕捉屏幕最常用的快捷键F5刷新DELETE删除TAB改变焦点CTRL+C复制CTRL+X剪切CTRL+V粘贴CTRL+A全选CTRL+Z撤销CTRL+S保存ALT+F4关闭CTRL+Y恢复ALT+TAB切换CTRL+F5强制刷新CTRL+W关闭CTRL+F查找SHIFT+DELETE永久删除CTRL+ALT+DEL任务管理SHIFT+TAB-反向切换CTRL+空格--中英文输入切换CTRL+Shift输入法切换CTRL+ESC--开始菜单CTRL+ALT+ZQQ快速提取消息CTRL+ALT+AQQ截图工具CTRL+ENTERQQ发消息Alt+1保存当前表单Alt+2保存为通用表单Alt+A展开收藏夹列表资源管理器END显示当前窗口的底端HOME显示当前窗口的顶端NUMLOCK+数字键盘的减号(-)折叠所选的文件夹NUMLOCK+数字键盘的加号(+)显示所选文件夹的内容NUMLOCK+数字键盘的星号(*)显示所选文件夹的所有子文件夹向左键当前所选项处于展开状态时折叠该项,或选定其父文件夹向右键当前所选项处于折叠状态时展开该项,或选定第一个子文件夹自然键盘【窗口】显示或隐藏“开始”菜单【窗口】+F1帮助【窗口】+D显示桌面【窗口】+R打开“运行”【窗口】+E打开“我的电脑”【窗口】+F搜索文件或文件夹【窗口】+U打开“工具管理器”【窗口】+BREAK显示“系统属性”【窗口】+TAB在打开的项目之间切换辅助功能按右边的SHIFT键八秒钟切换筛选键的开和关按SHIFT五次切换粘滞键的开和关按NUMLOCK五秒钟切换切换键的开和关左边的ALT+左边的SHIFT+NUMLOCK切换鼠标键的开和关左边的ALT+左边的SHIFT+PRINTSCREEN切换高对比度的开和关运行按“开始”-“运行”,或按WIN键+R,在『运行』窗口中输入:(按英文字符顺序排列)%temp%打开临时文件夹.C:\DocumentsandSettings\用户名所在文件夹..C:\DocumentsandSettings...我的电脑\C盘appwize.cpl添加、删除程序access.cpl辅助功能选项Accwiz辅助功能向导cmdCMD命令提示符commandCMD命令提示符chkdsk.e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生态旅游产业发展居间合同
- 二零二五版寄卖合同的格式
- 二零二五年度北京市销售精英劳动合同范本(含培训)
- 二零二五版规范借款合同
- 二零二五版防水工程施工合同十
- 2024年红外遮蔽诱饵及伪装陶瓷粉料项目资金需求报告代可行性研究报告
- 2025年中国黄花梨透雕龙纹挡板翘头案市场调查研究报告
- 2025年中国高空建筑灯市场调查研究报告
- 2025年中国防火密度板市场调查研究报告
- 2025年中国铠装电热电缆元件市场调查研究报告
- GB/T 6346.1-2024电子设备用固定电容器第1部分:总规范
- 2024高考英语必背词汇3500词
- 中班音乐春天多美好
- 医院培训课件:《医疗废物分类》
- 职业病健康培训课件
- 热能与动力工程专业基础课件
- Java程序设计项目式教程 课件 7-3 使用Map集合存储学生信息
- 犹太律法613条具体条款
- DC-DC反激变压器计算
- 简约宝贝成长档案 儿童成长手册A4版【空白可编辑内容】
- 三年级下册科学课件声音的产生-苏教版
评论
0/150
提交评论