1. 程式人生 > >利用百度雲介面實現車牌識別·python

利用百度雲介面實現車牌識別·python

一個小需求---實現車牌識別。

目前有兩個想法

1. 調雲線上的介面或者使用SDK做開發(配置環境和編譯第三方庫很麻煩,當然使用python可以避免這些問題)

2. 自己實現車牌識別演算法(複雜)


 一開始準備使用百度雲文字識別C++ SDK來做,發現需要準備curl、jsoncpp和OpenCV,並且curl和jsoncpp需要自己編譯,很麻煩,所以換用了python來做,真的是順暢簡單。

1. 安裝python環境(我用python3.7)

python官網下載地址:https://www.python.org/downloads/release/python-374/ 建議直接下載安裝版installer(看對系統和位數)

 

開啟安裝包無腦安裝即可。安裝好之後,看一下是否安裝成功。

cmd

python --version

2. 百度雲SDK下載安裝及建立應用

參考https://cloud.baidu.com/doc/OCR/s/pjwvxzmtc文件,安裝python SDK

檢視pip版本(python環境自帶,但是要注意版本)

pip --version

如果版本不合適,那麼自行升級pip

pip install -U pip

安裝baidu-aip

pip install baidu-aip

(安裝成功的樣子)

現在我們的百度雲SDK就安裝好了,下來建立應用

登入百度雲(沒賬號註冊一下)

建立應用

自己填一下 

 現在我們就建立好了車牌識別的應用,點選應用列表可檢視。

這裡的APPID、API KEY、Secret Key要在程式碼中使用。(注意不要洩漏)

3. 編碼調介面,實現需求

python程式碼實現

 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-