使用百度AI开放平台进行车牌识别

文章目录

    • 百度AI开放平台车牌识别使用
      • 1. 产生token
      • 2. 车牌识别
      • 3. 解析结果
    • 参考

本文介绍了如何使用百度AI开放平台获取token;以及如何调用百度API接口,请求车牌识别;以及对结果进行解析,并根据百度返回的坐标值画出车牌所在位置的矩形框。

百度AI开放平台车牌识别使用

1. 产生token

使用百度AI开放平台进行车牌识别_第1张图片
通过如下代码获取token。将获取到的API key 替换下面代码中client_id的, Secret Key替换client_secret。

import requests

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【client_id】&client_secret=【client_secret】'

headers = {'Content-Type': 'application/json; charset=UTF-8'}

res = requests.get(url=host, headers=headers).json()
print(res['access_token'])

2. 车牌识别

调用百度API接口,请求车牌识别。

例如上述过程中,产生的access_token为’24.4a29644749eb522b170e6d15bb47ce66.2592000’,将其替换data中的access_token

# 请求百度车牌识别
def request_baidu_lpr(img_file):
    url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate'
    data = {}
    data['access_token'] = '24.4a29644749eb522b170e6d15bb47ce66.2592000'

    # 读取图片
    file = open(img_file, 'rb')
    image = file.read()
    file.close()

    data['image'] = base64.b64encode(image)
    headers = {
        "Content-Type": "application/x-www-form-urlencoded"
    }

    res = requests.post(url=url, headers=headers, data=data)
    return res.json()

3. 解析结果

经过第二步得到的是json文件,需要对其进行解析,同时也需要根据百度返回的坐标值画出矩形框。

# 解析baidu识别结果
# 画出矩形框
def parse_baidu_result(result, img_file):
    result_lpr = result['words_result']['number']
    print('baidu识别结果', result_lpr)

    probability = result['words_result']['probability']

    import numpy as np
    probability_total = np.sum(probability)
    result_confidence = probability_total / len(probability)

    # 坐标位置
    rect = result['words_result']['vertexes_location']
    pos_1 = (rect[0]['x']-1, rect[0]['y']-12)
    pos_2 = (rect[2]['x']+3, rect[2]['y']+12)

	# 车牌所在位置画矩形框
	import cv2
    image = cv2.imread(img_file)
    cv2.rectangle(image, pos_1, pos_2, (0, 0, 255), 4)

	# 保存车牌文件到指定目录
    t = str(time.time())
    img_url = './static/images/lpr/lpr_result' + t + '.jpg'
    cv2.imwrite(img_url, image)

	# 返回车牌识别结果、置信度、图像存放路径
    return result_lpr, result_confidence, img_url

上诉2、3步骤的上层调用情况:

result = request_baidu_lpr(img)
result_lpr, confidence, img_url = parse_baidu_result(result, img)

参考

  1. Python+OpenCV图像标注矩形框bounding box
  2. python调用百度文字识别API测试图片

你可能感兴趣的:(Python)