最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Face++ API實(shí)現(xiàn)手勢(shì)識(shí)別系統(tǒng)設(shè)計(jì)

 更新時(shí)間:2018年11月21日 09:19:02   作者:小可愛的大笨蛋  
這篇文章主要為大家詳細(xì)介紹了Face++ API實(shí)現(xiàn)手勢(shì)識(shí)別系統(tǒng)設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

        通過普通攝像頭拍攝出的照片來進(jìn)行識(shí)別是存在很大的困難的,但是有困難才能找到更好的方法去解決。在百度上大致找了一下手語識(shí)別的案例,很少。API只是看到了Face++發(fā)布的手勢(shì)識(shí)別,在我寫文章的時(shí)候又看到了百度發(fā)布的手勢(shì)識(shí)別API,之后會(huì)嘗試去進(jìn)行使用。

        這次使用的是Face++的API,F(xiàn)ace++的API是在之前發(fā)現(xiàn)的,功能上的話還是比較強(qiáng)大的,但是沒有離線版本,需要將數(shù)據(jù)進(jìn)行上傳,然后對(duì)JSON進(jìn)行解析得到結(jié)果。

這是官網(wǎng)給出的一個(gè)Demo,識(shí)別率挺不錯(cuò)的,最后給出的是一個(gè)在20種手勢(shì)上的分布概率,接下來我們自己調(diào)用一下API分析自己的手勢(shì)。

1. 查看官方的API。找到Gesture API,先看一下是怎么說的。

調(diào)用參數(shù):

官方還給出了一些調(diào)用錯(cuò)誤返回的參數(shù)的說明,有興趣的可以去官網(wǎng)看一下。

還給出了一個(gè)使用命令行調(diào)用API的實(shí)例:

從實(shí)例上不難看出,向 https://api-cn.faceplusplus.com/humanbodypp/beta/gesture 發(fā)送請(qǐng)求,默認(rèn)的參數(shù)有 api_key,api_secret,image_file。api_key和api_secret可以通過控制臺(tái)進(jìn)行生成。

接下來開始寫代碼的調(diào)用,Python版本的,其他版本的類似。

我們將API封裝成一個(gè)類 Gesture:

將其中的key和secret替換成自己的就可以使用:

'''
# -*- coding:utf-8 -*-
@author: TulLing
'''
import requests 
from json import JSONDecoder 
 
gesture_englist = ['big_v','fist','double_finger_up','hand_open','heart_d','index_finger_up','ok','phonecall','palm_up','rock','thumb_down','thumb_up','victory']
gesture_chinese = ["我最帥",
   "拳頭,停下",
   "我發(fā)誓",
   "數(shù)字5",
   "比心",
   "數(shù)字1",
   "好的呢,OK",
   "打電話",
   "手心向上",
   "愛你,520",
   "差評(píng),不好的",
   "好評(píng),Good,很棒",
   "勝利,開心"]
# 將字典排序
def sort_dict(adict):
 return sorted(adict.items(),key= lambda item:item[1])
 
class Gesture(object):
 def __init__(self):
 self.http_url = 'https://api-cn.faceplusplus.com/humanbodypp/beta/gesture'
 self.key = '*****'
 self.secret = '******'
 self.data = {"api_key":self.key,"api_secret":self.secret}
 
 
 # 獲取手勢(shì)信息
 def get_info(self,files):
 response = requests.post(self.http_url,data=self.data,files=files)
 req_con = response.content.decode('utf-8')
 req_dict = JSONDecoder().decode(req_con)
 #print(req_dict)
 if('error_message' not in req_dict.keys()) and (len(req_dict['hands'])):
 # 獲取
  hands_dict = req_dict['hands']
  #print(type(hands_dict))
  # 獲取到手的矩形的字典
  gesture_rectangle_dict = hands_dict[0]['hand_rectangle']
  # 獲取到手勢(shì)的字典
  gesture_dict = hands_dict[0]['gesture']
  
  return gesture_dict,gesture_rectangle_dict
 else:
  return [],[];
 
 # 獲取到手勢(shì)文本信息
 def get_text(self,index):
 return gesture_chinese[index]
 
 # 獲取到手勢(shì)對(duì)應(yīng)的概率
 def get_pro(self,gesture_dict,index):
 # print(gesture_dict)
 if(gesture_dict is None or gesture_dict == []):
  return 0
 return gesture_dict[gesture_englist[index]]
 
 # 獲取到手勢(shì)的位置
 def get_rectangle(self,gesture_rectangle_dict):
 if(gesture_rectangle_dict is None or gesture_rectangle_dict == []):
  return (0,0,0,0)
 x = gesture_rectangle_dict['top']
 y = gesture_rectangle_dict['left']
 width = gesture_rectangle_dict['width']
 height = gesture_rectangle_dict['height']
 return (x,y,width,height)

封裝好了Gesture類后接下來就是調(diào)用:先將官方給出的手勢(shì)的圖片保存起來,為了方便只保留單手的手勢(shì),然后生成隨機(jī)數(shù)讀取手勢(shì)圖片,我們?nèi)ツ7率謩?shì),后臺(tái)顯示是正確手勢(shì)的概率以及具體的位置,如果圖像中沒有手勢(shì)則概率為0,位置為(0,0,0,0)。

'''
# -*- coding:utf-8 -*-
@author: TulLing
'''
import sys
sys.path.append("../gesture/")
 
import os
import random
import cv2 as cv
import time
import LearnGesture
 
def gestureLearning():
 os.system("cls")
 print("進(jìn)入學(xué)習(xí)手勢(shì)模式!")
 print("我們有13個(gè)手勢(shì),來和我學(xué)吧!(每次結(jié)束后可以選擇輸入 Q\q 退出!)")
 while(True):
 pic_num = random.randint(0,12) # 生成顯示的圖片的編號(hào)(隨機(jī)數(shù): 0 - 13)
 print(pic_num)
 pic_path = '../gesture/pic/gesture' + str(pic_num) + ".jpg" # 生成圖片路徑
 
 pic = cv.imread(pic_path) # 加載圖片
 pic = cv.resize(pic,(120,120))
 cv.imshow("PIC",pic) # 顯示要學(xué)習(xí)的手勢(shì)
 
 print("即將打開攝像頭,你有5秒種的時(shí)間準(zhǔn)備手勢(shì),5秒種保持手勢(shì)!")
 write_path = "../gesture/pic/test.jpg"
 cap = cv.VideoCapture(1)
 while(True):
  _,frame = cap.read()
  cv.imshow("Frame",frame)
  key = cv.waitKey(10)
  if(key == ord('Q') or key == ord('q')):
  cv.imwrite(write_path,frame)
  cv.waitKey(200)
  cap.release()
  cv.destroyAllWindows()
  break
  
 # 此處應(yīng)該有手勢(shì)識(shí)別
 files = {"image_file":open(write_path,'rb')}
 gesture = LearnGesture.Gesture()
 
 # 獲取到手勢(shì)文本
 ge_text = gesture.get_text(pic_num)
 # 獲取手勢(shì)信息
 gesture_dict,gesture_rectangle_dict = gesture.get_info(files)
 # 獲取手勢(shì)的概率
 ge_pro = gesture.get_pro(gesture_dict,pic_num)
 # 獲取到手勢(shì)的坐標(biāo)
 ge_rect = gesture.get_rectangle(gesture_rectangle_dict)
 print("您學(xué)習(xí)的手勢(shì)是:",ge_text)
 print("相似度達(dá)到:",ge_pro)
 print("具體位置:",ge_rect)
 
 
 # print("一輪學(xué)習(xí)結(jié)束,是否繼續(xù)學(xué)習(xí)?(Y/N)")
 # 退出程序,回到主菜單或者繼續(xù)
 commend = input("一輪學(xué)習(xí)結(jié)束,是否繼續(xù)學(xué)習(xí)?(Y/N):")
 print(commend)
 
 if( commend == 'N' or commend == "n"):
  break
gestureLearning()

圖片保存的路徑:./pic/

運(yùn)行結(jié)果:

顯示的隨機(jī)手勢(shì)

模仿的手勢(shì)(打個(gè)碼,主要看手)

點(diǎn)擊Q后:

手勢(shì)做的有點(diǎn)不標(biāo)準(zhǔn),但是沒關(guān)系,系統(tǒng)可以運(yùn)行。

調(diào)用Face++API的文章到此結(jié)束。代碼打包后會(huì)上傳。之后會(huì)修改鏈接地址。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python操作Git的項(xiàng)目實(shí)踐

    Python操作Git的項(xiàng)目實(shí)踐

    本文介紹了使用Python和GitPython庫進(jìn)行各種Git操作,包括打開倉庫、查詢狀態(tài)、添加和提交更改等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-12-12
  • 簡單了解python filter、map、reduce的區(qū)別

    簡單了解python filter、map、reduce的區(qū)別

    這篇文章主要介紹了簡單了解python filter、map、reduce的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁面的實(shí)例代碼

    python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁面的實(shí)例代碼

    這篇文章主要介紹了python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁面的實(shí)例代碼,需要的朋友可以參考下
    2018-05-05
  • python?中的?module?和?package

    python?中的?module?和?package

    這篇文章主要介紹了?python?中的?module?和?package?,文章基于Python的相關(guān)資料展開對(duì)主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 詳解python中flask_caching庫的用法

    詳解python中flask_caching庫的用法

    這篇文章主要介紹了詳解python中flask_caching庫的用法,可以在一定的時(shí)間內(nèi)直接返回結(jié)果而不是每次都需要計(jì)算或者從數(shù)據(jù)庫中查找。flask_caching插件就是提供這種功能的神器,需要的朋友可以參考下
    2023-05-05
  • Python程序流程控制實(shí)驗(yàn)

    Python程序流程控制實(shí)驗(yàn)

    這篇文章主要介紹了Python程序流程控制實(shí)驗(yàn),程序流程控制的使用在Python中具有非常重要的地位。在本文中我將布置Python程序流程控制的實(shí)驗(yàn)習(xí)題,希望您閱讀完本文后能夠有所收獲
    2022-01-01
  • 基于Python實(shí)現(xiàn)ComicReaper漫畫自動(dòng)爬取腳本過程解析

    基于Python實(shí)現(xiàn)ComicReaper漫畫自動(dòng)爬取腳本過程解析

    這篇文章主要介紹了基于Python實(shí)現(xiàn)ComicReaper漫畫自動(dòng)爬取腳本過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 用python讀取xlsx文件

    用python讀取xlsx文件

    這篇文章主要介紹了用python讀取xlsx文件的方法,幫助大家更好的利用python處理excel文件,感興趣的朋友可以了解下
    2020-12-12
  • Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作詞向量模型

    Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作詞向量模型

    本文是Python機(jī)器學(xué)習(xí)NLP自然語言處理系列文章,帶大家開啟一段學(xué)習(xí)自然語言處理 (NLP) 的旅程。本篇文章主要學(xué)習(xí)NLP自然語言處理基本操作詞向量模型
    2021-09-09
  • Pytorch中TensorBoard及torchsummary的使用詳解

    Pytorch中TensorBoard及torchsummary的使用詳解

    這篇文章主要介紹了Pytorch中TensorBoard及torchsummary的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評(píng)論

寻乌县| 定兴县| 嫩江县| 长沙市| 马公市| 铁力市| 左云县| 北京市| 塔城市| 望奎县| 育儿| 应用必备| 凤台县| 临猗县| 定日县| 临高县| 红安县| 明溪县| 昌黎县| 云阳县| 天台县| 临洮县| 沾化县| 东明县| 乌海市| 三穗县| 阿拉善右旗| 巢湖市| 同德县| 绥化市| 临高县| 正镶白旗| 隆林| 昌黎县| 汝城县| 抚远县| 临澧县| 东乡族自治县| 武穴市| 宽甸| 克山县|