python 实现的车牌识别项目


Posted in Python onJanuary 25, 2021

车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到。

简介

车牌识别系统(Vehicle License Plate Recognition)是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常一个车牌识别系统主要包括以下这四个部分:

  • 车辆图像获取
  • 车牌定位
  • 车牌字符分割
  • 车牌字符识别

我们再来看一下百科中对车牌识别技术的描述:

车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息,目前最新的技术水平为字母和数字的识别率可达到 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的话直接导入相关的包就行了,这个只要你baidu-aip包即可。

创建应用

SDK 安装好后,我们接着需要创建应用了,这里需要一个百度账号或百度云账号,如果没有的话自己注册一个即可,登录及注册地址为:https://login.bce.baidu.com/?redirect=http%3A%2F%2Fcloud.baidu.com%2Fcampaign%2Fcampus-2018%2Findex.html,登录之后,我们将鼠标移动到登录头像位置,接着在弹出菜单中单击用户中心,如下图所示:

python 实现的车牌识别项目

如果是首次进入的话,勾选一下相应信息,如下图所示:

python 实现的车牌识别项目

信息勾选完了之后,点击保存按钮。

接着将鼠标移动到左侧栏中 > 符号位置,再依次选择人工智能和文字识别,如下图所示:

python 实现的车牌识别项目

点击之后会进入到下图中:

python 实现的车牌识别项目

我们点击创建应用,进入下图中:

python 实现的车牌识别项目

这里我们只需要填一下应用名称和下面的应用描述即可,填写完毕之后点击立即创建。

创建完后,我们再返回应用列表,如下图所示:

python 实现的车牌识别项目

这里我们需要用到三个值:AppID、API Key 和 Secret Key。

具体实现

应用创建完了,我们就可以调用接口实现车牌识别功能了。

首先,我们要创建 AipOcr,AipOcr 是 OCR 的 Python SDK 客户端,为使用 OCR 的开发人员提供了一系列的交互方法,代码实现也比较简单,如下所示:

from aip import AipOcr

# 自己的 APPID AK SK
APP_ID = '自己的 App ID'
API_KEY = '自己的 Api Key'
SECRET_KEY = '自己的 Secret Key'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

在上面代码中,常量 APP_ID、API_KEY 和 SECRET_KEY 就是我们在查看应用列表时说的需要用到的常量值,这些值均为字符串,用于标识用户,为访问做签名验证。单引号中内容应该填上刚才注册登入时获取的自己的ID和Key

如果我们需要配置 AipOcr 的网络请求参数,可以在构造 AipOcr 之后调用接口设置参数,目前支持两个参数,看一下代码实现:

# 建立连接的超时时间,单位为毫秒
client.setConnectionTimeoutInMillis(5000)
# 通过打开的连接传输数据的超时时间,单位为毫秒
client.setSocketTimeoutInMillis(5000)

总的来说通过接口方式实现车牌识别功能是比较简单的,以如下图为例:

python 实现的车牌识别项目

 实现总的代码如下:直接复制粘贴到你的Pycharm中即可使用(记得先导入baidu-aip 的包和下面3-5行改成自己的ID和Key)

from aip import AipOcr

APP_ID = '自己的 App ID'
API_KEY = '自己的 Api Key'
SECRET_KEY = '自己的 Secret Key'
# 创建客户端对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 建立连接的超时时间,单位为毫秒
client.setConnectionTimeoutInMillis(5000)
# 通过打开的连接传输数据的超时时间,单位为毫秒
client.setSocketTimeoutInMillis(5000)

# 读取图片
def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
    return fp.read()

image = get_file_content('car.jpeg')
res = client.licensePlate(image)
print('车牌号码:' + res['words_result']['number'])
print('车牌颜色:' + res['words_result']['color'])

执行结果:

python 实现的车牌识别项目

上面代码实现的是对一张图片中的一个车牌进行识别,当然接口还支持对一张图片中的多个车牌进行识别,只需使用 licensePlate(image, options) 即可,
以如下图为例:

python 实现的车牌识别项目

实现代码如下:

from aip import AipOcr

APP_ID = '自己的 App ID'
API_KEY = '自己的 Api Key'
SECRET_KEY = '自己的 Secret Key'
# 创建客户端对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 建立连接的超时时间,单位为毫秒
client.setConnectionTimeoutInMillis(5000)
# 通过打开的连接传输数据的超时时间,单位为毫秒
client.setSocketTimeoutInMillis(5000)

# 读取图片
def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
    return fp.read()

image = get_file_content('cars.png')
options = {}
# 参数 multi_detect 默认为 false
options['multi_detect'] = 'true'
res = client.licensePlate(image, options)
for wr in res['words_result']:
  print('车牌号码:' + wr['number'])
  print('车牌颜色:' + wr['color'])

执行结果:

python 实现的车牌识别项目

总结

本文我们先对车牌识别进行了一些介绍,之后利用百度云接口实现了单个和多个车牌的识别功能,通过本文我们可以对车牌识别的相关概念和具体实现有一些了解。

以上就是python 实现的车牌识别项目的详细内容,更多关于python 车牌识别的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python random模块(获取随机数)常用方法和使用例子
May 13 Python
python打开网页和暂停实例
Sep 30 Python
python如何在循环引用中管理内存
Mar 20 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
Jun 01 Python
详解Python设计模式之策略模式
Jun 15 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
python 常见的排序算法实现汇总
Aug 21 Python
快速创建python 虚拟环境
Nov 28 Python
Django 用户认证Auth组件的使用
Nov 30 Python
教你怎么用python selenium实现自动化测试
May 27 Python
Python实现给PDF添加水印的方法
Jan 25 #Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 #Python
numba提升python运行速度的实例方法
Jan 25 #Python
python中K-means算法基础知识点
Jan 25 #Python
python中HTMLParser模块知识点总结
Jan 25 #Python
pycharm配置QtDesigner的超详细方法
Jan 25 #Python
Python扫描端口的实现
Jan 25 #Python
You might like
php常用的安全过滤函数集锦
2014/10/09 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
javascript中new关键字详解
2015/12/14 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
高级Java程序员面试题
2016/06/23 面试题
超级搞笑检讨书
2014/01/15 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
党员违纪检讨书
2014/02/18 职场文书
大学新学期计划书
2014/04/28 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
公司委托书格式范本
2014/09/16 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
朋友离别感言
2015/08/04 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python