百摩网
当前位置: 首页 生活百科

车号识别怎么弄(车号识别系统推荐)

时间:2023-05-21 作者: 小编 阅读量: 9 栏目名: 生活百科

如今在小区停车场、高速公路出入口、监控场所、自动收费站等地都有车牌识别系统的存在,车牌识别的研究也已逐步成熟。车牌颜色组合中,其中最常见的组合为普通小型汽车蓝底白字和新能源汽车的渐变绿底黑字。深度学习技术成熟之后,端到端的网络模型使得这一过程变得简单起来。可以认为检测出的车牌位置才是我们的感兴趣区域。当ROI被检测出来,如何对这一区域中的字符进行识别,这就涉及到采取的处理方式。

前言

车牌识别其实是个经典的机器视觉任务了,通过图像处理技术检测、定位、识别车牌上的字符,实现计算机对车牌的智能管理功能。如今在小区停车场、高速公路出入口、监控场所、自动收费站等地都有车牌识别系统的存在,车牌识别的研究也已逐步成熟。尽管该技术随处可见了,但其实在精度和识别速度上还需要进一步提升,自己动手实现一个车牌识别系统有利于学习和理解图像处理的先进技术。

车牌识别的算法经过了多次版本迭代,检测的效率和准确率有所提升,从最初的基于LBP和Haar特征的车牌检测,到后来逐步采用深度学习的方式如SSD、YOLO等算法。车牌的识别部分也由字符匹配到深度神经网络,通过不断验证和测试,其检测和识别效果和适用性都更加突出,支持的模型也更为丰富。

网上的车牌识别程序代码很多,大部分都是采用深度学习的目标检测算法等识别单张图片中的车牌,但几乎没有人将其开发成一个可以展示的完整软件,即使有的也是比较简单的界面。对此这里给出博主设计的界面,不算精美但比较简约风,功能也可以满足单张图片、批量图片、视频和摄像头的识别检测了,初始界面如下图:

检测车牌时的界面截图(点击图片可放大)如下图,也可开启摄像头或视频检测:

详细的功能演示效果参见博主的B站视频或下一节的动图演示,觉得不错的朋友敬请点赞、关注加收藏!系统UI界面的设计工作量较大,界面美化更需仔细雕琢,大家有任何建议或意见和可在下方评论交流。

1. 效果演示

首先还是用动图先展示一下效果,系统主要实现的功能是对图片、视频和摄像头画面中的车牌进行检测和识别,识别的结果可视化显示在界面和图像中,另外提供车牌识别历史记录和回看功能,演示效果如下。

(一)选择单张 / 批量车牌识别

首先还是用动图先展示一下效果。进入软件界面后,点击图片选择按钮选择一张图片,点击“开始运行”即可自动识别车牌并显示结果在界面上;点击历史识别记录的表格序号可回看识别记录。本功能的界面展示如下图所示:

同样的如果需要识别批量图片,可以选择一个包含多张图片文件的文件夹,选择好后点击“开始运行”则逐个对每个文件进行检测和识别,结果与单张图片时类似,可通过表格记录回看识别结果:

(二)车牌视频识别效果展示

很多时候我们需要识别一段视频中的车牌,这里设计了视频选择功能。点击视频按钮可选择待检测的视频,系统会自动解析视频逐帧识别车牌,并将结果记录在右下角表格中,效果如下图所示:

(三)摄像头检测效果展示

在真实场景中,我们往往利用设备摄像头获取实时画面,同时需要对画面中的车牌进行识别,因此本文考虑此功能。如下图所示,点击摄像头按钮后系统进入准备状态,再点击“开始运行”后,系统显示实时画面并开始检测画面中的车牌,识别结果展示并记录:

2. 车牌检测与识别

目前,智能交通系统中集成运用计算机视觉、物联网、人工智能等多种技术成为未来发展方向。其中,车牌识别(License Plate Recognition, LPR)技术作为一项重要技术,从获取的图像中提取目标车辆的车牌信息,成为完善智能交通管理运行的基础。

由于本文介绍的是中文车牌,所以可以简单了解一下国内汽车牌照的特点:字符数为七个,包括汉字、字母和数字。车牌颜色组合中,其中最常见的组合为普通小型汽车蓝底白字和新能源汽车的渐变绿底黑字。

由于本文介绍的是中文车牌,所以可以简单了解一下国内汽车牌照的特点:字符数为七个,包括汉字、字母和数字,车牌轮廓长宽比例基本固定。车牌颜色组合中,其中最常见的组合为普通小型汽车蓝底白字和新能源汽车的渐变绿底黑字。总结来说,车牌是一个有特点的图像区域,几种特征可以综合起来确定车牌定位,所以之前就有利用车牌与周围环境的差异的算法。目前常见的车牌定位算法有以下 4 种:基于颜色、纹理、边缘信息的车牌定位算法和基于人工神经网络的车牌定位算法。

为了方便演示,博主绘制了一张车牌识别的流程图,如下图所示,常规的步骤包括图像采集、预处理、车牌定位、字符分割、字符识别、输出结果。深度学习技术成熟之后,端到端的网络模型使得这一过程变得简单起来。从思想上来说,基于深度学习的车牌识别实现思路主要包括两个部分:(1)车牌检测定位;(2)车牌字符识别。

其中,车牌的检测定位本质是一个特定的目标检测(Object Detection)任务,即通过算法框选出属于车牌的位置坐标,以便将其与背景区分开来。可以认为检测出的车牌位置才是我们的感兴趣区域(Region Of Interest, ROI)。好用的方法如Cascade LBP,它是一种机器学习的方法,可以利用OPenCV训练级联分类器,依赖CPU进行计算,参考网址:http://gitee.com/zeusees/HyperLPR。级联分类器的方法对于常用场景效果比较好,检测速度较快,曾经一度比较流行,但准确率一般。基于深度学习的检测算法有Mobilene-SSD、YOLO-v5等,利用大批量的标注数据进行训练,训练代码可以参考开源代码http://github.com/zeusees/License-Plate-Detector。

当ROI被检测出来,如何对这一区域中的字符进行识别,这就涉及到采取的处理方式。第一种处理方式,首先利用一系列字符分割的算法将车牌中的字符逐个分开,然后基于深度学习进行字符分类,得到识别结果,可参考的代码地址:http://github.com/LCorleone/A-Simple-Chinese-License-Plate-Generator-and-Recognition-Framework;第二种,区别于第一种先分割再分类的两步走方式,利用端到端的CTC( Connectionist Temporal Classification)网络直接进行识别,代码地址:http://github.com/armaab/hyperlpr-train。

这里我们使用网上开源的HyperLPR中文车牌识别框架,首先导入OpenCV和hyperlpr,读取一张车牌图片调用架构中的车牌识别方法获得结果,以下代码来自官方的示例:

#导入包from hyperlpr import *#导入OpenCV库import cv2#读入图片image = cv2.imread("demo.jpg")#识别结果print(HyperLPR_plate_recognition(image))

以上代码运行结果如下,可以看出该方法识别了车牌的车牌字符、置信度值、车牌位置坐标、图片尺寸等结果。

这样的结果还不够直观,我们写一个函数将车牌的识别结果标注在图片上,首先导入相关依赖包,其代码如下:

# 导入包from hyperlpr import *# 导入OpenCV库import cv2 as cvfrom PIL import Image, ImageDraw, ImageFontimport numpy as np

新建一个函数drawRectBox,将图像数据、识别结果、字体等参数传入,函数内部利用OpenCV和PIL库添加标注框和识别结果的字符,其代码如下:

def drawRectBox(image, rect, addText, fontC):cv.rectangle(image, (int(round(rect[0])), int(round(rect[1]))),(int(round(rect[2]) + 8), int(round(rect[3]) + 8)),(0, 0, 255), 2)cv.rectangle(image, (int(rect[0] - 1), int(rect[1]) - 16), (int(rect[0] + 75), int(rect[1])), (0, 0, 255), -1, cv.LINE_AA)img = Image.fromarray(image)draw = ImageDraw.Draw(img)draw.text((int(rect[0] + 1), int(rect[1] - 16)), addText, (255, 255, 255), font=fontC)imagex = np.array(img)return imagex

我们首先读取图片文件,利用前面的HyperLPR_plate_recognition方法识别出车牌结果,调用以上函数获得带标注框的图片,利用OpenCV的imshow方法显示结果图片,其代码如下:

image = cv.imread('test3.jpg"')# 读取选择的图片res_all = HyperLPR_plate_recognition(image)fontC = ImageFont.truetype("./platech.ttf", 14, 0)res, confi, axes = res_all[0]image = drawRectBox(image, axes, res, fontC)cv.imshow('Stream', image)c = cv.waitKey(0) & 0xff

此时运行以上代码可以得到如下结果:

同理,识别视频中的车牌也可以做类似的操作,不过我们需要先对视频文件进行逐帧读取,然后采用以上的方式在图片中标识出车牌并显示。这部分代码如下:

capture = cv.VideoCapture("./车牌检测.mp4")# 读取视频文件fontC = ImageFont.truetype("./platech.ttf", 14, 0)# 字体,用于标注图片i = 1while (True):ref, frame = capture.read()if ref:i = i + 1if i % 5 == 0:i = 0res_all = HyperLPR_plate_recognition(frame)# 识别车牌if len(res_all) > 0:res, confi, axes = res_all[0]# 获取结果frame = drawRectBox(frame, axes, res, fontC)cv.imshow("num", frame)# 显示画面if cv.waitKey(1) & 0xFF == ord('q'):break# 退出else:break

以上代码每5帧识别一次视频中的车牌,将车牌的结果标注在画面中进行实时显示,运行结果的截图如下所示:

车牌的识别部分代码演示完毕,对此我们完成了图片和视频的识别,然而这些还是简单的脚本呈现。为了方便更换图片、视频以及管理车牌,还需要设计文件选择功能以及系统的UI界面。打开QtDesigner软件,拖动以下控件至主窗口中,车牌识别系统的界面设计如下图所示:控件界面部分设计好,接下来利用PyUIC工具将.ui文件转化为.py代码文件,通过调用界面部分的代码同时加入对应的逻辑处理代码。

    推荐阅读
  • 太阳能是双碳企业吗(双碳目标之下太阳能热利用行业能否二次腾飞)

    乘着家电下乡政策的东风,这个行业实现了自身发展的首次腾飞。集热器的年度销量在连年下跌后,已经回到2008年的规模水平。日出东方旗下的四季沐歌就是目前仍旧拥有稳定太阳能热水器单机零售渠道的头部品牌之一。《报告》显示,通过对山东、江苏、河北、云南、北京等地太阳能企业抽样调查得知,2020年工程市场占据了企业主营业务版块的74.3%。

  • 减掉10斤要消耗多少卡路里(减掉一公斤脂肪)

    医学减重专家陈伟今天正确的减重应该是减少脂肪组织内的脂肪,数据表明,减掉一公斤脂肪,一般需要消耗7000-10000千卡左右的能量。若每日减少500千卡能量摄入,则需14天减少1公斤;若每日减少1000千卡能量摄入,则需7天减去1公斤。若想通过增加活动量来达到同样的目的,则需要每天高强度锻炼至少1个小时,约能消耗掉500千卡。大家如果有减重方面的问题,想咨询陈伟教授,可以发邮件到邮箱,陈教授会定期为大家答疑解惑。

  • 红薯叶子有哪些禁忌(关于红薯叶子有哪些禁忌)

    红薯叶子有哪些禁忌体寒、肠胃不好的人要少吃红薯叶性凉,体寒、肠胃不好的人要少吃,不然的话可能会加重体寒的症状,增加胃肠道负担,给身体带来危害。避免和豆腐同食红薯叶中含有大量的草酸钙,而豆腐中含有生石灰,二者同食可能会生出草酸钙沉淀,形成一些不可溶解的结晶,造成结石,红薯叶尽量避免和豆腐同食。

  • 李白最美的相思诗(李白最美的一首相思诗)

    《三五七言》秋风清,秋月明,落叶聚还散,寒鸦栖复惊,相思相见知何日,此时此夜难为情。在诗词中,秋夜怀人已经成为习俗。这首《三五七言》由两句三言、两句五言、两句七言组成,故名。《梅庵琴谱》叙述,后三联并非李白所作。有些诗集收录李白《三五七言》时,也只写了前三联。时至今日,我们已经无法考查出后三联是否是李白的真实作品。如果是李白所作,我们亦可窥见李白绵长的情思和高超的写作水平。

  • 和平精英巡查员有什么用(和平精英巡查员的是做什么的)

    和平精英巡查员有什么用?接下来我们就一起去了解一下吧!可以帮助官方检测报道的视频,根据检查的次数获得相应的检称号题,甚至解锁永久的视频巡查员奖励。这些好处仍然很吸引人,想要收集它们的玩家可以尝试提交它们。当成为巡查员以后,会有专属于巡查员的任务,完成他们以后,会获得奖励,每个赛季,都有每个赛季的巡查任务,以及赛季巡查的专属奖励。

  • 在海上感觉的句子(在海上的句子盘点)

    它并不凶猛,也不可怕。我躺在沙滩上,就像躺在摇篮里,又像躺在妈妈的怀里。看这海天一色的美景下,不少花花绿绿的小点以及欢快的呼喊声冲击这人们的视觉与听觉。这欢乐的人们在大海母亲的怀抱中多么自在,多么轻松。我用手轻轻的拍打着浪花,顽皮的浪花溅起了无数颗细小的水珠,溅在脸上凉丝丝的真是舒服。你看,这飞奔的浪花多像一个个淘气的小娃娃呀。

  • 影之诗最强攻略(每日影之诗咸鱼翻身)

    在很多对局中,仅凭佐伊便足以取胜。中期尽快使用凤凰的庭园或进化万花凤凰召唤庭园,并找机会在场上凑齐双庭园。没有以上牌的话,可以使用蜥蜴的吐息解场,或使用龙之传令、激奏佐伊。通常火神龙优先于嗔怒,因为嗔怒与庭园配合更好,也不干扰辉饰拿佐伊。龙铠战士的主战者效果能提供大量额外伤害,可以配合猎龙砍击等法术打出最高满血斩杀,应对安息的领域等减伤手段。对鬼留降诞的涸绝。

  • 王砚辉大人物经典片段(49岁反派专业户王砚辉)

    49岁反派专业户王砚辉现实题材电视剧《小欢喜》近日引发了不小的讨论,剧中实力派演员王砚辉和咏梅组成的区长一家是近年荧屏生活剧中很少见到的干部家庭如何才能把这个“区长老爸”演得像?在王砚辉看来,演干部也好,演父亲也好,无论演。

  • 福建正宗鱼丸的做法(大厨分享秘制鱼丸)

    福建正宗鱼丸的做法鱼肉大家都认识,它是我们餐桌上经常吃到的食物之一,它的营养价值非常高,有丰富的蛋白质,还有维生素等其他微量元素。2根鲢鱼尾,葱姜水,适量盐,适量鸡精,一大勺玉米淀粉,2个鸡蛋清,一勺猪油。

  • 重庆高考成绩查询时间是好久(重庆高考成绩查询时间一样吗)

    包括按规定可安排在提前批次录取的招生专业和计划。包括定向培养士官招生等有面试体检(体测)等特殊要求、航海类等艰苦专业及其他按规定可安排在提前批次录取的专科招生专业及计划,设置2个院校顺序志愿。除高职专科提前批以外的其他专科招生专业及计划,设置96个专业平行志愿。强基计划、香港高校独立招生、民族传统体育和运动训练专业单独招生、飞行技术招生等安排在普通类本科提前批A段前进行。