【基础|Python实例之调用百度API实现车牌识别】
目录
- 1.作者介绍
- 2.车牌识别API介绍
- 3.实现过程
-
- 3.1 调用API
- 3.2 代码
- 参考
1.作者介绍 王世豪,男,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。
研究方向:机器视觉与人工智能。
电子邮件:shauwang@foxmail.com
2.车牌识别API介绍
支持识别中国大陆机动车蓝牌、黄牌(单双行)、绿牌、大型新能源(黄绿)、领使馆车牌、警牌、武警牌(单双行)、军牌(单双行)、港澳出入境车牌、农用车牌、民航车牌的地域编号和车牌号,并能同时识别图像中的多张车牌。3.实现过程 3.1 调用API 首先打开百度智能云官网注册登录。
文章图片
登录之后选择文字识别服务
文章图片
创建应用
文章图片
然后输入应用名称、描述,并选择应用类型为个人,之后点击“立即创建”按钮。
文章图片
之后返回应用列表就可以看到已经创建好的车牌识别的应用,此处显示API Key和Secret Key,后边程序中会用到。
文章图片
注意:百度智能云车牌识别API免费版提供每天200次免费调用,后续会调用失败。建议妥善保存API Key和Secret Key。
应用创建完成之后打开接口文档https://ai.baidu.com/ai-doc/OCR/ck3h7y191得到以下有用信息。
请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate
Header格式:Content-Type:application/x-www-form-urlencoded
文章图片
3.2 代码 使用示例代码前,请记得替换其中的示例图片地址和Key。
# -*- coding: utf-8 -*-
import urllib
import urllib.parse
import urllib.request
import base64
import json# client_id 为官网获取的API Key, client_secret 为官网获取的Secret Key,将自己应用的Key分别复制在下方即可。
client_id = '*********'
client_secret = '********'# 获取token
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json;
charset=UTF-8')
response = urllib.request.urlopen(request)
token_content = response.read()
if token_content:
token_info = json.loads(token_content.decode("utf-8"))
token_key = token_info['access_token']
return token_key# 读取图片
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()# 获取车牌号信息
def get_license_plate(path):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate"f = get_file_content(path)
access_token = get_token()
img = base64.b64encode(f)
params = {"custom_lib": False, "image": img}
params = urllib.parse.urlencode(params).encode('utf-8')
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url, data=https://www.it610.com/article/params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
# print("json类型下的返回值:", content)
if content:
license_plates = json.loads(content.decode("utf-8"))
# print("utf-8解码并转化为python类型下的返回值:", license_plates)
strover = '识别结果:'
words_result = license_plates['words_result']
# print("python类型下的返回值:", words_result)
number = words_result['number']
strover += '车牌号:{} \n '.format(number)
print(strover)
return content
else:
return ''
# 读取图片,自行保存图片,更改路径即可。
image_path = 'D:\桌面\chepai.jpg'
# image_path = 'C:/Users/Wong/chepai.jpg'
# image_path = r'C:\Users\Wong\chepai.jpg'
get_license_plate(image_path)
在PyCharm或者Windows的终端下定位到车牌识别程序文件所在文件夹,运行该程序即可进行识别。
文章图片
参考
百度云API文档
https://cloud.baidu.com/doc/OCR/index.html
百度智能云车牌识别
https://cloud.baidu.com/doc/OCR/s/ck3h7y191
调用百度的车牌识别api
https://blog.csdn.net/u011622208/article/details/102999991
什么是Token
https://www.jianshu.com/p/24825a2683e6
推荐阅读
- Qt自绘控件|Qt仿iOS的Switch开关实现
- Python|为什么学完Python后的薪资这么高()
- Phthon|Python datacompy 找出两个DataFrames不同的地方
- 数据可视化|Python绘制疫情地图 超简单!
- Python|使用python对全球最新疫情情况进行可视化地图绘制!
- java|如何写出让同事无法维护的代码()
- 【Python】|Python 代码规范
- java|云原生爱好者周刊(Grafana Loki 免费电子书)
- 大数据|11 个可以部署在 Linux 服务器上的开源论坛软件 | Linux 中国