边缘智能计算应用课件:车牌识别算法接口应用_第1页
边缘智能计算应用课件:车牌识别算法接口应用_第2页
边缘智能计算应用课件:车牌识别算法接口应用_第3页
边缘智能计算应用课件:车牌识别算法接口应用_第4页
边缘智能计算应用课件:车牌识别算法接口应用_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

边缘计算算法SDK应用(基于RockX)边缘智能计算应用

车牌识别算法接口应用边缘智能计算应用职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08

车牌识别算法接口应用了解车牌识别含义与应用场景了解RockX车牌识别算法掌握USB摄像头采集图像掌握车牌识别算法接口的调用,识别图像掌握多线程的方式实现图像采集和算法识别功能职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08

车牌识别算法接口应用

此任务的主要内容是介绍车牌识别在生活当中的应用场景,利用OpenCV实现图像的采集调用算法接口,进行图像识别,使用多线程方式实现图像采集和车牌识别,通过本次学习,掌握车牌识别算法接口的应用。任务描述任务要求完成RockX车牌识别算法接口的定义与使用多线程方式实现视频流的车牌识别任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08

车牌识别算法接口应用任务分析怎么样实现摄像头对车牌的识别?如何使用多线程方式实现视频流的车牌检测?任务分析与计划03任务计划表项目名称边缘计算算法SDK应用(基于RockX)任务名称车牌算法接口的应用计划方式自主设计计划要求请用6个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

456通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08

车牌识别算法接口应用RockX车牌识别算法简介204知识储备车牌识别含义与应用场景11车牌识别的含义2应用场景04车牌识别系统(VehicleLicensePlateRecognition,VLPR)是计算机视频图像识别技术在车辆牌照识别中的一种应用,车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息。04车牌识别的含义车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息,目前最新的技术水平为字母和数字的识别率可达到99.7%,汉字的识别率可达到99%。04车牌识别的含义在停车场管理中,车牌识别技术也是识别车辆身份的主要手段。在深圳市公安局建设的《停车库(场)车辆图像和号牌信息采集与传输系统技术要求》中,车牌识别技术成为车辆身份识别的主要手段。。04车牌识别的含义车牌识别就是依次实现汽车图像的车牌定位、车牌字符分割、车牌字符识别算法的过程。04车牌识别系统的基本工作原理及流程车牌识别的含义车牌定位就是把车牌图像从含有汽车和背景的图像中提取出来,其输入的是原始的汽车图像,输出是车牌图像。车牌的字符分割就是通过对车牌图像的预处理、几何校正等把字符从车牌图像中分割出来,分成一个个独立的字符,其输入是车牌定位后得到的车牌图像,输出是经过预处理、几何校正等后得到的一组单个的字符图像,并得到各个字符的点阵数据。字符识别是依次从单个字符点阵数据中提取字符特征数据,并给出识别结果。04车牌识别系统的基本工作原理及流程车牌识别的含义04车牌识别系统的基本工作原理及流程车牌识别的含义车牌定位是车牌识别的关键步骤,为了能在复杂背景和不均匀光照条件下快速准确定位车牌位置,基于改进IsotropicSobel边缘检测算子的车牌定位算法,由此来解决其存在的问题,该算法通过改进IsotropicSobel边缘检测算子,实现了车牌图像在水平、垂直以及对角线方向上的纹理特征提取,然后采用Otsu算法阈值化,再对阈值化后的二值图像做数学形态学运算得到车牌的候选区域,最后利用车牌特征去除伪车牌。04车牌定位车牌识别的含义04车牌识别算法实现(1)对输入的彩色图像进行灰度化处理(2)Sobel边缘检测算子(3)对边缘检测后的灰度图进行二值化处理(4)对车牌图像进行图像形态学操作车牌识别的含义04车牌识别算法实现算法流程图:车牌识别的含义1、车辆检测跟踪模块2、车牌定位模块3、车牌矫正及精定位模块4、车牌切分模块5、车牌识别模块6、车牌识别结果决策模块7、车牌跟踪模块04车牌识别系统采用高度模块化的设计,将车牌识别过程的各个环节各自作为一个独立的模块。车牌识别的含义(1)文件分辨率低,通常由于车牌较远,有时是由于低端相机导致的;(2)图像模糊,尤其是运动模糊;(3)由于强光,反射或阴影造成的光照和对比度较差;(4)车牌(部分)遮挡,通常是拖车杆或车牌上的污渍;(5)前后识别结果不同,如拖车,露营车等;(6)采集车牌时,车道在相机视角中发生改变;(7)字体不同,常见于一些浮夸的车牌;(8)规避车牌识别的手段;(9)不同国家或各州间的缺乏协调。不同国家或州的两辆车可以有相同的车牌号但是设计不同。04车牌识别难点车牌识别的含义1车牌识别的含义2应用场景04

车牌识别技术结合电子不停车收费系统(ETC)识别车辆,过往车辆通过道口时无须停车,即能够实现车辆身份自动识别、自动收费。在车场管理中,为提高出入口车辆通行效率,车牌识别针对无需收停车费的车辆(如月卡车、内部免费通行车辆),建设无人值守的快速通道,免取卡、不停车的出入体验,正改变出入停车场的管理模式。04车牌识别应用场景1.电子警察系统电子警察系统作为一种抓拍车辆违章违规行为的智能系统,可以完成多项违章抓拍功能,其中包括违章闯红灯抓拍功能、违章不按车道行驶抓拍功能、违章压线变道抓拍功能、违章压双黄线抓拍功能和违章逆行抓拍功能等内容。04车牌识别应用场景2.卡口系统卡口系统对监控路段的机动车辆进行全天候的图像抓拍,自动识别车牌号码,通过公安专网与卡口系统控制中心的黑名单数据库进行比对,当发现结果相符合时,系统自动向相关人员发出警报信号。04车牌识别应用场景3.高速公路收费系统当车辆在高速公路收费入口站时,系统进行车牌识别,保存车牌信息,当车辆在高速公路收费出口站时,系统再次进行车牌识别,与进入车辆的车牌信息进行比对,只有进站和出站的车牌一致方可让车辆通行。04车牌识别应用场景4.高速公路超速抓拍系统系统抓拍超速的车辆和识别车牌号码,并通过公安专网将超速车辆的车牌号码传达到各出口处罚点,各出口处罚点用车牌识别设备对出口车辆进行车牌识别,与己经收到的超速车辆的号码对比,一旦号码相同立即报警。04车牌识别应用场景5.停车场收费系统当车辆进入停车场时,收费系统抓拍车辆图片进行车牌识别,保存车辆信息和进入时间,当车辆离开停车场时,收费系统自动识别出该车的车牌号码和保存车辆离开的时间,并计算出该车的停车费用,车主交完费用后,收费系统自动放行。04车牌识别应用场景6.公交车报站系统当公交车进入和离开公交站台时,报站系统对其进行车牌识别,然后与数据库中的车牌进行比对,语音报读车牌结果和公交线路。综上所述,车牌识别技术的广泛应用使道路安全、交通通畅、车辆安全、环境保护得到了全面的保障。04车牌识别应用场景RockX车牌识别算法简介204知识储备车牌识别含义与应用场景1RockX车牌识别算法简介04rockx车牌识别库是集成在核心开发板上的一套python的接口库,可以直接调用RockX车牌识别算法简介04下面是可识别的车牌字符表注:

1.CCPD(ChineseCityParkingDataset)是国内车牌数据集,从中随机抽取10000张进行测试。

2.支持识别国内蓝色、绿色和黄色车牌。

3.可识别的车牌字符如表所示。RockX车牌识别算法简介04调用过程职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08

车牌识别算法接口应用05任务实施多线程方式实现视频流的车牌识别2RockX车牌识别相关算法接口的定义与使用142加载图片数据1导入相关的库3实例化算法接口对象调用车牌检测函数RockX车牌识别相关算法接口的定义与使用05RockX车牌识别相关算法接口的定义与使用86调用车牌识别函数5调用车牌对齐函数7画出车牌框,并绘制车牌号将经过算法处理的图像显示RockX车牌识别相关算法接口的定义与使用05RockX车牌识别相关算法接口的定义与使用RockX车牌识别相关算法接口的定义与使用05下面通过车牌识别实验,利用OpenCV采集图片,识别图片中的车牌,来诠释RockX车牌识别相关算法接口的定义和使用RockX车牌识别相关算法接口的定义与使用05importtimeimportcv2#引入OpenCV图像处理库fromrockximportRockX#引入车牌识别算法接口库1导入相关的库RockX车牌识别相关算法接口的定义与使用05图片使用OpenCV利用摄像头采集一张图片,或者使用OpenCV读取现有的图片,这里使用读取摄像头的方式2加载图片数据RockX车牌识别相关算法接口的定义与使用05cap=cv2.VideoCapture(0)time.Sleep(2)cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)ret,frame=cap.read()cv2.imshow('image_win',frame)cv2.waitKey(200)cv2.imwrite("图片名称",frame)cap.release()cv2.destroyAllWindows()2加载图片数据读取一张图片利用OpenCV打开摄像头采集一张图片,在之前的章节有介绍,例如以下案例:RockX车牌识别相关算法接口的定义与使用05importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库imgbox=widgets.Image()#定义一个图像盒子,用于装载图像数据display(imgbox)#将盒子显示出来imgbox.value=cv2.imencode('.jpg',image_car)[1].tobytes()#把图像值转成byte类型的值2加载图片数据(2)打印原始的照片RockX车牌识别相关算法接口的定义与使用05in_img_h,in_img_w,ch=image_pose.shapeprint(in_img_h,in_img_w,ch)2加载图片数据(3)获取图片信息获取图片的长,宽和通道数RockX车牌识别相关算法接口的定义与使用05在RockX库中,包含了算法各种功能模式,实例化算法为:handle=RockX(功能类型)3实例化算法接口功能类型:这里采用车牌的检测,对齐,和识别的功能模式RockX.ROCKX_MODULE_CARPLATE_DETECTION是车牌检测功能类型RockX.ROCKX_MODULE_CARPLATE_ALIGN是车牌对齐功能类型RockX.ROCKX_MODULE_CARPLATE_RECOG是车牌识别功能类型RockX车牌识别相关算法接口的定义与使用054调用车牌检测函数参数说明:in_img:输入图片(numpyndarray)width:图片宽height:图片高pixel_fmt:图片pixelformat为了获取车牌框的位置,调用车牌检测函数,通过对图像的检测,识别车牌的的位置信息rockx_carplate_detect(self,in_img,width,height,pixel_fmt)返回值说明:ret:状态码,0为成功,其他失败results:RockX对象的列表,就是说一张图可能包含多个车牌对象,每个对象包含了车牌的位置框信息等,比如,其中一个车牌信息:results[0].box表示车牌的位置框信息(results[0].box.left,results[0].box.top)表示位置框,左上角的位置(results[0].box.right,results[0].box.bottom)表示位置框,右下角的位置RockX车牌识别相关算法接口的定义与使用055调用车牌对齐函数rockx_carplate_align(self,in_img,width,height,pixel_fmt,in_box)为了对车牌的图片的倾斜等,需要对车牌进行矫正对齐调用车牌对齐函数,通过前面得到的车牌对象,把车牌对象的位置框信息作为输入,进行车牌的矫正对齐这里只使用单个车牌(results[0])结果来做检测识别,根据上面的参数说明:in_img:输入图片(numpyndarray)width:图片宽height:图片高pixel_fmt:图片pixelformatin_box:车牌检测后的单个车牌的位置信息返回值说明:ret:状态码,0为成功,其他失败align_result:返回对齐后的结果对象,主要包含对齐后的图片数据信息,比如:对齐后的图片align_result.aligned_imageRockX车牌识别相关算法接口的定义与使用056调用车牌识别函数rockx_carplate_recognize(self,in_aligned_img)为了获取具体的车牌信息,调用车牌识别函数,针对矫正对齐后的图片数据结果,进行识别分析参数说明:in_aligned_img:车牌对齐后的对象的图片数据(align_result.aligned_image)返回值说明:ret:状态码,0为成功,其他失败recog_result:返回识别后的结果信息,比如:车牌号RockX车牌识别相关算法接口的定义与使用057画出车牌框,并绘制车牌号cv2.rectangle(image,pt1=(int(left),int(top)),pt2=(int(right),int(bot)),color=(0,255,0),thickness=3)(1)利用OpenCV在图像上添加文字cv2.rectangle()的作用是根据坐标,描绘一个简单的矩形边框参数依次为:图片,左上角右下角位置坐标,线条颜色,线条粗细RockX车牌识别相关算法接口的定义与使用057画出车牌框,并绘制车牌号fromlib.ft2importft(2)引入中文绘画库用于在图片上描绘中文字符ft.draw_text的作用是在图片的某个位置上添加文字信息,参数依次为,图片,位置,文字,字体大小,字体颜色img=ft.draw_text(img,position,'{}'.format(plate_number),34,(255,0,0))RockX车牌识别相关算法接口的定义与使用058将经过算法处理的图像显示importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库imgbox=widgets.Image()#定义一个图像盒子,用于装载图像数据display(imgbox)#将盒子显示出来imgbox.value=cv2.imencode('.jpg',image_car)[1].tobytes()#把图像值转成byte类型的值利用jupyter的画图库和显示库,来显示获取的图片05任务实施多线程方式实现视频流的车牌识别2RockX车牌识别相关算法接口的定义与使用142定义摄像头采集线程1引入相关的库3定义算法识别线程调用两个线程,启动视频流的车牌识别5停止线程多线程方式实现视频流的车牌识别05多线程方式实现视频流的车牌识别根据前面学到的知识,利用多线程,使图像采集和算法识别同时运行,从而实现视频流的车牌识别,并且可以避免一些因花时间太久,导致的视频卡顿多线程方式实现视频流的车牌识别05使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。1引入相关的库多线程类似于同时执行多个不同程序,多线程运行有如下优点:多线程方式实现视频流的车牌识别051引入相关的库importtime#时间库importcv2#引入opencv图像处理库fromlib.ft2importft#中文描绘库importthreading#这是python的标准库,线程库importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库fromrockximportRockX#引入算法库每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。多线程方式实现视频流的车牌识别052定义摄像头采集线程结合上面的opencv采集图像的内容,利用多线程的方式串起来,形成一个可传参,可调用的通用类。这里定义了一个全局变量camera_img,用作存储获取的图片数据,以便于其他线程可以调用init初始化函数实例化该线程的时候,会自动执行初始化函数,在初始化函数里面,打开摄像头,并设置分辨run函数该函数是在实例化后,执行start启动函数的时候,会自动执行。在该函数里,实现了循环获取图像的内容请说说执行线程的几种方式?多线程方式实现视频流的车牌识别052定义摄像头采集线程classCameraThread(threading.Thread):def__init__(self,camera_id,camera_width,camera_height):threading.Thread.__init__(self)self.working=Trueself.cap=cv2.VideoCapture(camera_id)#打开摄像头self.cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_width)#设置摄像头分辨率宽度self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_height)#设置摄像头分辨率高度代码分析多线程方式实现视频流的车牌识别05defrun(self):globalcamera_img#定义一个全局变量,用于存储获取的图片,以便于算法可以直接调用whileself.working:try: ret,image=self.cap.read()#获取新的一帧图片,ret为获取的状态值 ifnotret: time.sleep(0.1) continuecamera_img=imageexceptExceptionase: pass defstop(self): self.working=False self.cap.release()多线程方式实现视频流的车牌识别0523定义算法识别线程结合调用算法接口的内容和图像显示内容,利用多线程的方式整合起来,循环识别,对摄像头采集线程中获取的每一帧图片进行识别,并显示,形成视频流的画面init初始化函数实例化该线程的时候,会自动执行初始化函数,在初始化函数里面,定义了显示内容,并实例化车牌识别run函数该函数是在实例化后,执行start启动函数的时候,会自动执行。在该函数是一个循环,实现了对采集的每一帧图片进行算法识别,然后将结果绘画在图片上,并将处理后的图片显示出来多线程方式实现视频流的车牌识别05调用两个线程,启动视频流的车牌识别camera_th=CameraThread(0,640,480)camera_th.start()face_detect_th=FaceDetectThread()face_detect_th.start()实例化两个线程,并启动这两个线程,实现完整的车牌识别功能,运行时,加载模型比较久,需要等待几秒多线程方式实现视频流的车牌识别05

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论