1. 程式人生 > >3. 手勢識別系統設計——使用 baidu API

3. 手勢識別系統設計——使用 baidu API

        上午寫完部落格後,和女朋友吃完飯,收拾一下就開始看百度的API,基本上和Face++相同,不同之處在於返回的JSON資訊以及多了一個面部資訊。

1. 安裝百度API

安裝的過程很簡單:

pip install baidu-aip

安裝完成:

都不需要下載百度官方的SDK。

2. 生成ID,KEY,SECRET。

到百度AI開放平臺——> 人體分析 ——> 建立應用 ——> 填寫資訊(記得選擇人體分析,預設是選擇好的)。

就有了想要的ID,KEY,Secret。

3. Coding

準備好之後,就可以開始呼叫百度API了,還是用Python來寫,方便。

3.1 導庫:

# 導庫
from aip import AipBodyAnalysis
import cv2 as cv

3.2 設定常量,建立連線

# 在官網申請,申請好了之後將*修改
API_ID = '*****'  
API_KEY = '*****'
SECRET_KEY = '****'
client = AipBodyAnalysis(APP_ID,API_KEY,SECRET_KEY)  # 建立連線

3.3  讀取檔案,完成識別

# 讀取檔案方法
def get_file_content(filePath):
    with open(filePath,'rb') as fp:
        return fp.read()
# 讀取圖片
image = get_file_content('test.jpg')
# 識別,得到JSON資訊
gesture_info = client.gesture(image)
print(gesture_info)

上圖是我們得到的JSON資訊,發現和Face++有一點不同,沒有error_message(測試上傳錯誤之後只會返回一個error_message),但是多了result_num,在類別裡面多了一個Face,其他的沒有多大的不同。我們接下來對JSON進行解析。

3.4 JSON解析

先獲取到result_num:

# 獲取到結果個數
num = gesture_info['result_num']
print(num)

之後獲取到結果:

# 獲取到結果集合
if(num != 0):
    result = gesture_info['result']
    print(result)

最後我們輸出除了面部意外的其他的資訊:
 

for i in range(0,2):
    classname = result[i]['classname']
    if(classname == 'Face'):
        continue
    print(result[i])

輸出結果:

測試圖:

         之後想要試試能不能完成實時的一個檢測,但是估計線上版本的都有點難度,因為需要一次IO的讀寫操作以及一定的網路延時,雖然Face++檢測一張圖片的時間在100us左右。之後試一試SVM的本地版本。