车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(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 命令即可,SDK 支持 Python 的版本为:2.7+ 与 3.x,SDK 目录结构如下:

├── README.md

├── aip // SDK 目录

│ ├── __init__.py // 导出类

│ ├── base.py // aip 基类

│ ├── http.py // http 请求

│ └── ocr.py //OCR

└── setup.py // setuptools 安装

创建应用

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

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

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

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

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

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

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

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

这里我们需要用到三个值: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 就是我们在查看应用列表时说的需要用到的常量值,这些值均为字符串,用于标识用户,为访问做签名验证。

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

# 建立连接的超时时间,单位为毫秒

client.setConnectionTimeoutInMillis(5000)

# 通过打开的连接传输数据的超时时间,单位为毫秒

client.setSocketTimeoutInMillis(5000)

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

实现代码如下:

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'])

执行结果:

车牌号码:川QK9777

车牌颜色:blue

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

实现代码如下:

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'])

执行结果:

车牌号码:京N6HZ61

车牌颜色:blue

车牌号码:鲁NS1A26

车牌颜色:blue

总结

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

用python做一个车牌识别_如何用 Python 识别车牌相关推荐

  1. 利用python做一个小游戏_如何使用python做一个简单的猜数字的小游戏

    1 首先小编先打开IDLE,如下图: 2 然后这里点击菜单栏的'File',然后点击菜单"New File",如下图: 3 然后我们就在idle中新建了一个python文件,如下图 ...

  2. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  3. 用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型

    匿名用户 1级 2017-01-01 回答 预测模型的分解过程 我总是集中于投入有质量的时间在建模的初始阶段,比如,假设生成.头脑风暴.讨论或理解可能的结果范围.所有这些活动都有助于我解决问题,并最终 ...

  4. python做一个考试系统_请用 Python 语言编写一个简易的系统登录程序。

    import tkinter.messagebox import tkinter my_window = tkinter.Tk() # 生成 my_window 主窗口 my_window.title ...

  5. python做一个本地搜索工具_用Python打造一款文件搜索工具,所有功能自己定义!...

    一.前言 大家好,又到了Python办公自动化系列. 在日常的办公中,我们经常会从一堆不同格式的文件(夹)中搜索特定的文件,可能你是凭着记忆去找或是借助软件,但你有想过如何用Python实现吗?本文将 ...

  6. python解析器是什么_如何用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  7. python编写一个简单计算器_如何用Tkinter写个简单计算器

    上机实践课程开始了,嗯,老师来了之后念了下PPT,然后说:开始做吧......... 然后就开始了Python的GUI之路,以前没接触过PYthon的可视化界面(虽然这样很不明智) 但是现在做起来感觉 ...

  8. php饼图只有一个小方块_如何用Python画一个好看的饼图

    这是一个关于画一个饼图的故事......话说在一个月黑风高的夜晚,笔者肚子饿了,脑海中回想起画饼充饥的典故,于是打算.... 成功冷到自己...... 好吧进入正题,这次我们来说说怎么用python画 ...

  9. python情绪分析的意义_如何用Python和R对故事情节做情绪分析?

    想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...

最新文章

  1. 毕马威发布《人工智能无处不在》研究报告:人工智能在五大行业的成就与挑战...
  2. [Head First设计模式]生活中学设计模式——迭代器模式
  3. php 日志处理类,php中自定义日志处理类(类似于java中的log4j)
  4. jvm六:主动使用(1.new一个对象, 2.反射)
  5. linux 生成字母序列,Python序列之字符串
  6. ABAP实例:如何生成年月的输入帮助
  7. k8s灰度更新_k8s slb如何实现灰度发布-问答-阿里云开发者社区-阿里云
  8. ubuntu系统中root的2种pip路径
  9. C++ ActiveX开发的问题讨论
  10. OpenCV探索之路(零):HighGUI——使用imwrite调整保存的图片质量
  11. Pandas系列(六)SettingWithCopyWarning报警
  12. Redis 配置文件重要属性介绍
  13. 银行卡四要素验证API接口用法简介
  14. hutool 读取扩展名文件_好多公司都要用的一些知识点Office办公软件、文件加密、文件扩展名!...
  15. 单元测试总结反思_单元测试小反思200字
  16. windows之在局域网内共享和共同编辑EXCEL
  17. 简单画布canvas的画法
  18. 关于芯片寄存器地址的理解
  19. c语言中<< , >>的作用
  20. 牛客社区论坛项目(二)

热门文章

  1. 在看到厄尔巴岛之前,我曾经不可一世
  2. 后端开发【一大波有用知识】网络通信模型和网络IO管理
  3. java计算机毕业设计某日杂商店进销存管理系统设计源码+系统+数据库+lw文档+mybatis+运行部署
  4. Google Gson
  5. 《二叉树中常见面试题--单值二叉树、翻转二叉树、平衡二叉树》
  6. uniapp中video标签设置controls显示问题
  7. Unity零基础到入门 ☀️| 【UI系统学习】认识Unity引擎中几种最常用 UI系统,这一篇文章就够用了!
  8. Acer 4750 安装黑苹果_NUC8 黑苹果安装教程
  9. 【Cocos2d-X】iOS6 中 libcurl.a及iOS6中无法横屏的解决方法
  10. 9月20号甲骨文学习总结