上次我嘗試做了一個(gè)給眼鏡加特效,針對(duì)的是靜態(tài)圖像,具體文章參考 https://ai.baidu.com/forum/topic/show/942890 。
這次我嘗試在視頻中加眼鏡特效,并且加上手勢(shì)識(shí)別,不同的手勢(shì)佩戴不同的眼鏡。接下來將介紹手勢(shì)識(shí)別接口,并介紹如何接入。
手勢(shì)識(shí)別接口
接口描述
識(shí)別圖片中的手勢(shì)類型,返回手勢(shì)名稱、手勢(shì)矩形框、概率分?jǐn)?shù),可識(shí)別24種常見手勢(shì),適用于手勢(shì)特效、智能家居手勢(shì)交互等場(chǎng)景。
支持的24類手勢(shì)列表:拳頭、OK、祈禱、作揖、作別、單手比心、點(diǎn)贊、Diss、我愛你、掌心向上、雙手比心(3種)、數(shù)字(9種)、Rock、豎中指。
注:
•上述24類以外的其他手勢(shì)會(huì)劃分到other類。
•除識(shí)別手勢(shì)外,若圖像中檢測(cè)到人臉,會(huì)同時(shí)返回人臉框位置。
人體分析的請(qǐng)求方式和人臉識(shí)別的請(qǐng)求方式有所不同,具體的使用說明參見文檔 https://ai.baidu.com/docs#/Body-API/27495b11
請(qǐng)求格式
POST 方式調(diào)用,請(qǐng)求 URL 為 https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture ,Content-Type 為 application/x-www-form-urlencoded,然后通過 urlencode 格式化請(qǐng)求體。
請(qǐng)求參數(shù)
返回說明
返回示例
{"log_id":4466502370458351471,"result_num":2,"result":[{"probability":0.9844077229499817,"top":20,"height":156,"classname":"Face","width":116,"left":173},{"probability":0.4679304957389832,"top":157,"height":106,"classname":"Heart_2","width":177,"left":183}]}
實(shí)例
1. 創(chuàng)建應(yīng)用
由于戴眼鏡是使用的人臉識(shí)別的接口,手勢(shì)識(shí)別是人體分析的接口,因此為了將手勢(shì)識(shí)別應(yīng)用到戴眼鏡特效中,需要在創(chuàng)建人臉識(shí)別應(yīng)用時(shí)勾選人體分析的手勢(shì)識(shí)別。
首先進(jìn)入“控制臺(tái)”的“人臉識(shí)別”,然后“創(chuàng)建應(yīng)用”。
然后填上“應(yīng)用名稱”和“應(yīng)用描述”,并且接口勾選上“人體分析”下的“手勢(shì)識(shí)別”。
之后點(diǎn)擊“立即創(chuàng)建”,創(chuàng)建好之后我們就能夠獲取到應(yīng)用的 “API key” 和 “Secret key”,用于后面獲取 “token key”。
2.獲取 token key
通過 API Key 和 Secret Key 獲取的 access_token。更多關(guān)于 access_token 的獲取方法參考 http://ai.baidu.com/docs#/Auth/top。
下面代碼是 python3 獲取 access_token 的代碼
defget_token_key():#client_id為官網(wǎng)獲取的AK,client_secret為官網(wǎng)獲取的SKclient_id='【百度云應(yīng)用的AK】'#APIkeyclient_secret='【百度云應(yīng)用的SK】'#Secretkeyurl=f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials'\f'&client_id={client_id}&client_secret={client_secret}'headers={'Content-Type':'application/json;charset=UTF-8'}res=requests.post(url,headers=headers)token_content=res.json()assert"error"notintoken_content,f"{token_content['error_description']}"token_key=token_content['access_token']returntoken_key3.調(diào)用手勢(shì)識(shí)別接口調(diào)用手勢(shì)識(shí)別接口的python3代碼實(shí)現(xiàn)如下:defget_hand_info(image_base64,token_key):request_url="https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture"params_d=dict()params_d['image']=str(image_base64,encoding='utf-8')access_token=token_keyrequest_url=request_url+"?access_token="+access_tokenres=requests.post(url=request_url,data=params_d,headers={'Content-Type':'application/x-www-form-urlencoded'})data=res.json()assert'error_code'notindata,f'Error:{data["error_msg"]}'returndata正確調(diào)用接口獲取到數(shù)據(jù)之后,我們可以得到一些想要的信息。例如:獲取檢測(cè)的類別的數(shù)量、各個(gè)類別的類別名以及邊框。defget_hand_num(data):returndata['result_num']defget_hand_cls_and_bbox(data):result=list()cls_list=list()hand_num=get_hand_num(data)foriinrange(hand_num):res_dict=data['result'][i]cls=res_dict['classname']cls_list.append(cls)bbox=[res_dict['left'],res_dict['top'],res_dict['width'],res_dict['height']]res=[cls]+bboxresult.append(res)returnresult,cls_list
案例代碼與說明
整個(gè)案例的核心代碼如下:(由于人臉識(shí)別的 QPS 為 2,因此在顯示圖像時(shí)使用了 cv2.waitKey(500),所以這個(gè)應(yīng)用看起來不是很流暢)
importcv2fromutilimportpic_base64,get_face_info,get_face_location,get_face_num,frame2base64,get_hand_infofrompprintimportpprintimportutilimportface_utilimportgesture_utilimportosimportrandomtoken_key='【獲取的tokenkey】'glasses_img=['images/glasses/'+imgforimginos.listdir('images/glasses')]glasses=cv2.imread('images/glasses/glasses6.png',cv2.IMREAD_UNCHANGED)cap=cv2.VideoCapture(0)whileTrue:_,image=cap.read()detect_img=image.copy()gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)image_base64=frame2base64(image)face_data=get_face_info(image_base64,token_key)hand_data=get_hand_info(image_base64,token_key)_,cls_list=util.get_hand_cls_and_bbox(hand_data)ifface_data:location=get_face_location(face_data)face_num=util.get_face_num(face_data)landmark4=util.get_landmark4(face_data)ifutil.compare_hand(cls_list,'Heart_single'):detect_img=gesture_util.draw_heart_single(detect_img)ifutil.compare_hand(cls_list,'Ok'):detect_img=gesture_util.draw_firework(detect_img)ifutil.compare_hand(cls_list,'One'):glasses=cv2.imread(glasses_img[1],cv2.IMREAD_UNCHANGED)detect_img=gesture_util.draw_one(detect_img)ifutil.compare_hand(cls_list,'Two'):glasses=cv2.imread(glasses_img[2],cv2.IMREAD_UNCHANGED)detect_img=gesture_util.draw_two(detect_img)ifutil.compare_hand(cls_list,'Three'):glasses=cv2.imread(glasses_img[3],cv2.IMREAD_UNCHANGED)detect_img=gesture_util.draw_three(detect_img)ifutil.compare_hand(cls_list,'Four'):glasses=cv2.imread(glasses_img[4],cv2.IMREAD_UNCHANGED)detect_img=gesture_util.draw_four(detect_img)ifutil.compare_hand(cls_list,'Five'):glasses=cv2.imread(glasses_img[5],cv2.IMREAD_UNCHANGED)detect_img=gesture_util.draw_five(detect_img)ifutil.compare_hand(cls_list,'Fist'):glasses=cv2.imread(glasses_img[random.randint(0,len(glasses_img)-1)],cv2.IMREAD_UNCHANGED)ifutil.compare_hand(cls_list,'ILY'):detect_img=gesture_util.draw_love(detect_img)detect_img=face_util.wear_glasses(detect_img,glasses,face_num,landmark4)detect_img=cv2.flip(detect_img,1)else:detect_img=cv2.flip(detect_img,1)#fori,clsinenumerate(cls_list):#ifcls!='Face':#cv2.putText(detect_img,cls,(50,50+100*i),cv2.FONT_HERSHEY_SIMPLEX,0.6,(0,255,255),2)cv2.imshow('pic',detect_img)key=cv2.waitKey(500)&0xFFifkey==ord('q'):breakcap.release()cv2.destroyAllWindows()
該代碼主要識(shí)別數(shù)字1-5、比心、OK、單手我愛你和拳頭手勢(shì),數(shù)字1-5對(duì)應(yīng)不同類型的眼鏡,拳頭代表隨機(jī)更換眼鏡,比心會(huì)在界面上畫出心?,OK會(huì)在界面上展示一些煙花,單手我愛你展示愛你的表情。
下面是一些截圖展示:
one:
two:
three:
four:
five:
OK:
比心:
我愛你:
項(xiàng)目代碼地址: https://github.com/busyboxs/baiduAIFace ,修改好自己的 API key 和 Secret Key 之后直接執(zhí)行 camera_face 即可。(作者:busyboxs)
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長(zhǎng)
- 為什么年輕人不愛換手機(jī)了
- 柔宇科技未履行金額近億元被曝已6個(gè)月發(fā)不出工資
- 柔宇科技被曝已6個(gè)月發(fā)不出工資 公司回應(yīng)欠薪有補(bǔ)償方案
- 第六座“綠動(dòng)未來”環(huán)保公益圖書館落地貴州山區(qū)小學(xué)
- 窺見“新紀(jì)元”,2021元宇宙產(chǎn)業(yè)發(fā)展高峰論壇“廣州啟幕”
- 以人為本,景悅科技解讀智慧城市發(fā)展新理念
- 紐迪瑞科技/NDT賦能黑鯊4 Pro游戲手機(jī)打造全新一代屏幕壓感
- 清潔家電新老玩家市場(chǎng)定位清晰,攜手共進(jìn),核心技術(shù)決定未來
- 新思科技與芯耀輝在IP產(chǎn)品領(lǐng)域達(dá)成戰(zhàn)略合作伙伴關(guān)系
- 芯耀輝加速全球化部署,任命原Intel高管出任全球總裁
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。