3. 手勢識別系統設計——使用 baidu API
阿新 • • 發佈:2018-11-24
上午寫完部落格後,和女朋友吃完飯,收拾一下就開始看百度的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的本地版本。