Instancia de Python que llama a la API de Baidu para realizar el reconocimiento de matrículas

1. Sobre el autor

Wang Shihao, hombre, Escuela de Información Electrónica, Universidad Politécnica de Xi'an, estudiante graduado de 2020, Grupo de Investigación de Inteligencia Artificial de Zhang Hongwei.
Dirección de investigación: visión artificial e inteligencia artificial.
Correo electrónico: [email protected]

2. Introducción a la API de reconocimiento de matrículas

Admite la identificación de placas azules, placas amarillas (líneas simples y dobles), placas verdes, nuevas energías grandes (amarillas y verdes), placas de consulados, placas de policía, placas de policía armada (líneas simples y dobles), placas militares (líneas simples y dobles). líneas dobles), el número regional y el número de matrícula de las matrículas de entrada y salida de Hong Kong y Macao, las matrículas agrícolas y las matrículas de aviación civil, y puede identificar varias matrículas en la imagen al mismo tiempo.

3. Proceso de implementación

3.1 API de llamada

Primero abra el sitio web oficial de Baidu Smart Cloud para registrarse e iniciar sesión.
inserte la descripción de la imagen aquí
Después de iniciar sesión, seleccione el servicio de reconocimiento de texto
inserte la descripción de la imagen aquí
para crear una aplicación
inserte la descripción de la imagen aquí
, luego ingrese el nombre de la aplicación, la descripción y seleccione el tipo de aplicación como personal, y luego haga clic en el botón "Crear ahora".
inserte la descripción de la imagen aquí
Después de volver a la lista de aplicaciones, puede ver la aplicación de reconocimiento de matrículas que se ha creado.Aquí se muestran la clave API y la clave secreta, que se utilizarán en el programa más adelante.
inserte la descripción de la imagen aquí

Nota: La versión gratuita de Baidu Smart Cloud License Plate Recognition API proporciona 200 llamadas gratuitas por día y las llamadas posteriores fallarán. Se recomienda mantener la clave API y la clave secreta correctamente.

Después de crear la aplicación, abra el documento de interfaz https://ai.baidu.com/ai-doc/OCR/ck3h7y191 para obtener la siguiente información útil.
URL de solicitud: https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate
Formato de encabezado: Tipo de contenido: application/x-www-form-urlencoded
inserte la descripción de la imagen aquí

3.2 Código

Antes de usar el código de muestra, recuerde reemplazar la dirección y la clave de la imagen de muestra.

# -*- 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=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)

Localice la carpeta donde se encuentra el archivo del programa de reconocimiento de matrículas en PyCharm o terminal de Windows y ejecute el programa para reconocerlo.
inserte la descripción de la imagen aquí

Referirse a

Documentación de Baidu Cloud API
https://cloud.baidu.com/doc/OCR/index.htmlBaidu
Intelligent Cloud License Plate Recognition
https://cloud.baidu.com/doc/OCR/s/ck3h7y191
Llame a Baidu's License Plate Recognition API
https ://cloud.baidu.com/doc/OCR/s/ck3h7y191 ://blog.csdn.net/u011622208/article/details/102999991Qué
es el token
https://www.jianshu.com/p/24825a2683e6

Supongo que te gusta

Origin blog.csdn.net/m0_37758063/article/details/116571433
Recomendado
Clasificación