A small demand --- license plate recognition.
There are two ideas
1. Bring Cloud-line interface or use the SDK to do development (environment and configure third-party libraries to compile a lot of trouble, of course, these problems can be avoided using python)
2. realize his license plate recognition algorithms (complex)
Baidu cloud began to prepare a text recognition using C ++ SDK to do, find it necessary to prepare curl, jsoncpp and OpenCV, and curl and jsoncpp need to compile a lot of trouble, so switching to a python to do, really smooth and simple.
1. Install the python environment (I use python3.7)
Download python official website: https://www.python.org/downloads/release/python-374/ proposal directly download and install version installer (see the system and the number of bits)
Open the installation package can be installed without the brain. After installing, see if the installation was successful.
cmd
python --version
2. Baidu Cloud SDK to create applications to download and install
Reference https://cloud.baidu.com/doc/OCR/s/pjwvxzmtc documentation, installation python SDK
View pip version (python own environment, but be aware version)
pip --version
If the version is not appropriate, then the upgrade itself pip
pip install -U pip
AnSo baidu-aip
pip install baidu-aip
(Looks like a successful installation)
Now we are on the Baidu Cloud SDK installed, down to create applications
Login Baidu Cloud (account registration did not look)
Creating an application
Fill out their own
Now we have created a license plate recognition application, click the application list to view.
Here APPID, API KEY, Secret Key to be used in your code. (Be careful not to leak)
3. code modulation interface, demand
python code implementation
1 ''' 2 Statement 3 1. using the file 4 2. prepare a image path and call func "get_license_plate(filePath)" 5 3. you can get a json object 6 4. get the info from the pbject 7 example : 8 { 9 "log_id": 3583925545, 10 "words_result": { 11 "color": "blue", 12 "number": "苏HS7766" 13 } 14 } 15 ''' 16 17 from aip import AipOcr 18 import json 19 20 """get img""" 21 def get_file_content(filePath): 22 with open(filePath, 'rb') as fp: 23 return fp.read() 24 25 """ get licsense plate """ 26 def get_license_plate(filePath): 27 """ APPID AK SK """ 28 APP_ID = '********' 29 API_KEY = '**************' 30 SECRET_KEY = '******************' 31 32 """ create client """ 33 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) 34 35 image = get_file_content(filePath) 36 37 """ 调用车牌识别 """ 38 res = client.licensePlate(image) 39 return res 40 41 42 """ call example """ 43 str = 'C:\\Users\\***\\Desktop\\big.jpg' """ 照片绝对地址 """ 44 res = get_license_plate(str) 45 print('车牌号码:' + res['words_result']['number']) 46 print('车牌颜色:' + res['words_result']['color'])
代码分解
引入库
from aip import AipOcr """百度云SDK""" import json """json库"""
创建客户端
""" APPID AK SK 自己创建的应用中的数据""" APP_ID = '*******' API_KEY = '***************' SECRET_KEY = '******************' """ create client """ client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
调用接口得到车牌识别结果
image = get_file_content(filePath) """ 调用车牌识别 """ res = client.licensePlate(image)
这里的res是一个json对象/一个dict
例子
{ "log_id": 3583925545, "words_result": { "color": "blue", "number": "苏HS7766" } }
可以使用res['listname']['listname']形式获取字典数据
print('车牌号码:' + res['words_result']['number']) print('车牌颜色:' + res['words_result']['color'])
至此,我们就实现了使用百度云SDK,通过编写python代码调用接口的车牌识别需求。
参考文档
【1】百度云API文档:https://cloud.baidu.com/doc/OCR/s/pjwvxzmtc/
【2】python pip安装与使用:https://www.runoob.com/w3cnote/python-pip-install-usage.html
【3】python官网:https://www.python.org/downloads/release/python-374/