face++ API接口調用

人臉識別算法

  首先我想描述一下,在學校的時候一直好奇人臉識別與人臉檢測這個技術,以後作了不少實驗,曾經使用過不少簡單的算法來作人臉類似度對比,好比:夾角餘弦算法、判斷兩個矩陣之間對應位置元素相同來作統計、直方圖比對、歐氏距離、絕對值距離等等不少這種低級的實驗我都作過,一次次的識別讓我感到萬分難過。以後我不在最求這種算法的研究了,改爲了看別人如何實現的,你也實現出來就好。不少人說這是it從業者的徵兆,這樣我完全相信了,由於做爲一個it開發的從業工做者,不能什麼東西都須要本身開發,公司的要求是儘快的把項目趕出來,才能到達利益最大化。下面我爲你們帶來我在學校一直實驗的人臉識別實現吧。固然我是在調用別人的接口。json

一、導入所須要的包api

import requests from json import JSONDecoder import cv2
導包

二、定義請求返回數據畫出人臉ide

def drawFace(face_rectangle,img): width = face_rectangle['width'] top = face_rectangle['top'] left = face_rectangle['left'] height = face_rectangle['height'] start = (left, top) end = (left + width, top + height) color = (55, 255, 155) thickness = 3 cv2.rectangle(img, start, end, color, thickness)
定義函數

三、準備好post請求的地址、key、password。函數

compare_url = "https://api-cn.faceplusplus.com/facepp/v3/compare" key = "5Ut_EUtu3dG8Q60UBQdj8_LICgc4KByR" secret = "cWXtsKOMx62m8zHUx810MG-0oGoOnhSO" faceId1 = "img_test/tong1.jpg"  # 圖片地址
faceId2 = "img_test/tong2.jpg"  # 圖片地址
 data = {"api_key": key, "api_secret": secret} files = {"image_file1": open(faceId1, "rb"), "image_file2": open(faceId2, "rb")} response = requests.post(compare_url, data=data, files=files)
發送請求

四、對http返回數據進行轉換提取post

req_con = response.content.decode('utf-8') req_dict = JSONDecoder().decode(req_con) print(req_dict) #置信度,越高說明越像
confindence = req_dict['confidence'] print(confindence) #將人臉框出來
face_rectangle_1 = req_dict['faces1'][0]['face_rectangle'] # print(face_rectangle_1)
face_rectangle_2 = req_dict['faces2'][0]['face_rectangle']
View Code

五、畫出檢測對比的人臉url

img1 = cv2.imread(faceId1) img2 = cv2.imread(faceId2) if confindence>=80: drawFace(face_rectangle_1,img1) drawFace(face_rectangle_2,img2) #圖片過大,調整下大小
img1 = cv2.resize(img1,(500,500)) img2 = cv2.resize(img2,(500,500)) cv2.imshow("img1",img1) cv2.imshow("img2",img2) cv2.waitKey(0) cv2.destroyAllWindows()
View Code

六、下面是完整代碼:spa

# coding:utf-8
import
requests from json import JSONDecoder import cv2 def drawFace(face_rectangle,img): width = face_rectangle['width'] top = face_rectangle['top'] left = face_rectangle['left'] height = face_rectangle['height'] start = (left, top) end = (left + width, top + height) color = (55, 255, 155) thickness = 3 cv2.rectangle(img, start, end, color, thickness) compare_url = "https://api-cn.faceplusplus.com/facepp/v3/compare" key = "5Ut_EUtu3dG8Q60UBQdj8_LICgc4KByR" secret = "cWXtsKOMx62m8zHUx810MG-0oGoOnhSO" faceId1 = "img_test/tong1.jpg" # 圖片地址 faceId2 = "img_test/tong2.jpg" # 圖片地址 data = {"api_key": key, "api_secret": secret} files = {"image_file1": open(faceId1, "rb"), "image_file2": open(faceId2, "rb")} response = requests.post(compare_url, data=data, files=files) req_con = response.content.decode('utf-8') req_dict = JSONDecoder().decode(req_con) print(req_dict) #置信度,越高說明越像 confindence = req_dict['confidence'] print(confindence) #將人臉框出來 face_rectangle_1 = req_dict['faces1'][0]['face_rectangle'] # print(face_rectangle_1) face_rectangle_2 = req_dict['faces2'][0]['face_rectangle'] img1 = cv2.imread(faceId1) img2 = cv2.imread(faceId2) if confindence>=80: drawFace(face_rectangle_1,img1) drawFace(face_rectangle_2,img2) #圖片過大,調整下大小 img1 = cv2.resize(img1,(500,500)) img2 = cv2.resize(img2,(500,500)) cv2.imshow("img1",img1) cv2.imshow("img2",img2) cv2.waitKey(0) cv2.destroyAllWindows()
相關文章
相關標籤/搜索