基于python的车牌识别系统,python车牌识别系统开源代码
车牌识别在高速公路上有着广泛的应用,比如我们常见的电子不停车收费(ETC)系统和交通违章车辆的检测。除此之外,它还可以用于住宅区或地下车库的门禁,基本上所有需要对车辆进行身份识别的地方都会用到它。
汽车牌照识别是计算机视频图像识别技术在汽车牌照识别中的一个应用。通常,一个车牌识别系统主要包括以下四个部分:
图像采集车牌定位车牌字符分割车牌字符识别我们先来看看百科中对车牌识别技术的描述:
车牌识别技术要求能够从复杂的背景中提取并识别出运动车辆的车牌。车牌提取、图像预处理、特征提取、车牌字符识别等技术可以用来识别车辆的号码、颜色等信息。目前最新的技术水平是字母和数字的识别率可以达到99.7%,汉字的识别率可以达到99%。
实现:这里不做太复杂的车辆动态识别,只演示从图像中识别车牌信息。车牌识别的实现方式大致有两种,一种是自己写代码,一种是借助第三方API接口实现。
自我实现如果想通过Python自己的手工编码实现车牌识别功能,可以使用一些Python库,比如OpenCV,TensorFlow等。这样的话,因为每个功能点都需要我们自己编码,所以会相对复杂。另一方面,如果要保证识别的准确性,可能需要做大量的实验,这就意味着需要更多的时间。
第三方接口现在一些第三方平台已经实现了车牌识别的功能,并且对外提供了API接口。我们只需要调用它们提供的接口,实现起来相对简单,通常接口提供者提供的接口函数的准确性也基本有保证。原因很简单。如果界面功能太差,首先你会面对自己,然后基本上就没人用了。它也失去了接口向外界提供的价值。另外,第三方接口可能会收取一定的费用。所以实际执行的话,要综合考虑。
为了实现上述情况,我们使用第三方接口来实现车牌识别的功能。作为接口提供者,我们选择的是百度云提供的接口,它提供了免费的配额。简单来说就是每天可以免费使用多少次。超过这个数,就要付出代价了。文件地址是:https://cloud.baidu.com/doc/OCR/index.html.让我们看看具体的实施过程。
安装SDK百度云SDK提供多种语言支持,如Python、Java、C、IOS、Android等。在这里,我们安装了Python版本的SDK。安装非常简单,使用pip install baidu-aip命令即可。如果你使用Pycharm,你可以直接导入相关的包。你只需要百度-aip包就可以了。
查看我的另一篇关于如何导入包的博客,并给出下面的地址:
安装应用程序SDK后,我们需要创建应用程序。这里需要一个百度账号或者百度云账号。如果没有,可以自己注册一个。登录注册地址为:https://login.bce.baidu.com/?重定向=http://cloud.baidu.com/campaign/campus-2018/index.html.登录后,我们将鼠标移动到登录头像位置,然后在弹出菜单中点击用户中心,如下图所示:
如果是第一次进入,查看相应的信息,如下图所示:
检查完信息后,单击保存按钮。
然后将鼠标移动到左栏的符号位置,依次选择人工智能和字符识别,如下图所示:
点击后,会进入下图:
我们单击“创建应用程序”,进入下图:
在这里,我们只需要填写应用程序名称和下面的应用程序描述,然后单击立即创建。
创建完成后,我们将返回到应用列表,如下图所示:
这里我们需要使用三个值:AppID、API Key和Secret Key。
具体应用创建完成后,我们就可以调用接口实现车牌识别功能了。
首先我们要创建AipOcr,它是Ocr的Python SDK客户端。它为使用OCR的开发者提供了一系列交互方法,代码实现相对简单,如下图:
从aip导入AipOcr
# own APPID AK SK
APP_ID=自己的应用ID
API_KEY=自己的API密钥
SECRET_KEY=自己的密钥
client=AIP Cr(APP _ ID,API_KEY,SECRET_KEY)。在上面的代码中,常量app _ id、API _ key和secret _ key是我们在查看应用程序列表时需要使用的常量值。这些值都是字符串,用于识别用户和验证访问签名。单引号中的内容应填写您刚刚注册和登录时获得的ID和密钥。
如果需要配置AIP Cr的网络请求参数,可以在构造AIP Cr后调用接口设置参数。目前,支持两个参数。看一下代码实现:
#建立连接的超时时间,单位为毫秒
client . setconnectiontimeoutinmillis(5000)
#通过打开的连接传输数据的超时时间,以毫秒为单位。
client . setsockettimeoutinmillis(5000)一般来说,通过接口实现车牌识别功能是比较简单的。以下图为例:
总代码如下:直接复制粘贴到你的Pycharm里就可以用了(记得先导入百度-aip的包,把下面3-5行改成你的ID和Key)
从aip导入AipOcr
APP_ID=自己的应用ID
API_KEY=自己的API密钥
SECRET_KEY=自己的密钥
#创建一个客户端对象
client=AipOcr(应用标识,应用密钥,保密密钥)
#建立连接的超时时间,单位为毫秒
client . setconnectiontimeoutinmillis(5000)
#通过打开的连接传输数据的超时时间,以毫秒为单位。
client . setsockettimeoutinmillis(5000)
#阅读图片
def获取文件内容(文件路径):
使用open(filePath, rb )作为fp:
返回fp.read()
image=get _ file _ content( car . JPEG )
res=client.licensePlate(图像)
Print(车牌号码: res[words_result][number])
print( license plate color: RES[ words _ result ][ color ])执行结果:
上面的代码实现了图片中车牌的识别。当然,界面也支持一张图中多个车牌的识别。只需使用牌照(图像、选项)。
以下图为例:
实现代码如下:
从aip导入AipOcr
APP_ID=自己的应用ID
API_KEY=自己的API密钥
SECRET_KEY=自己的密钥
#创建一个客户端对象
client=AipOcr(应用标识,应用密钥,保密密钥)
#建立连接的超时时间,单位为毫秒
client . setconnectiontimeoutinmillis(5000)
#通过打开的连接传输数据的超时时间,以毫秒为单位。
client . setsockettimeoutinmillis(5000)
#阅读图片
def获取文件内容(文件路径):
使用open(filePath, rb )作为fp:
返回fp.read()
image=get _ file _ content( cars . png )
选项={}
#参数multi_detect默认为false。
选项[multi_detect]=true
res=client.licensePlate(图像,选项)
对于res[words_result]中的wr:
打印(车牌号码: wr[号码])
打印(牌照颜色: wr[颜色])执行结果:
综上,我们先介绍了车牌识别,然后利用百度云接口实现了单个和多个车牌的识别功能。通过本文,我们可以对车牌识别的相关概念和具体实现有所了解。
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。