1. 程式人生 > >face++實現人臉識別及人臉相似度對比

face++實現人臉識別及人臉相似度對比

轉自https://blog.csdn.net/qq_38181012/article/details/81124217

  1. 使用face++,先獲取key和secret
  2. 下方是人臉識別,還添加了畫出人臉輪廓的正方形
import requests#網路訪問控制元件
from json import JSONDecoder#網際網路資料交換標準格式
import cv2 as cv#影象處理控制元件

http_url ="https://api-cn.faceplusplus.com/facepp/v3/detect"#face++apiDETECT模組
key ="自己官網弄"#開發人員識別碼
secret ="同上"
gender="gender,age"#性別變數
filepath1 ="c:\\python\\image\\f2.jpg"#影象位置
data = {"api_key":key, "api_secret": secret, "return_attributes":gender}
#資料格式化準備傳送到face,詞典格式json

files = {"image_file": open(filepath1, "rb")}#準備開啟
response = requests.post(http_url, data=data, files=files)#用post方式(還有get)傳送資料到網站
req_con = response.content.decode('utf-8')#網頁解碼
req_dict = JSONDecoder().decode(req_con)#把json解碼成python詞典格式
print(req_dict)
w=req_dict["faces"][0]["face_rectangle"]["width"]
t=req_dict["faces"][0]["face_rectangle"]["top"]
l=req_dict["faces"][0]["face_rectangle"]["left"]
h=req_dict["faces"][0]["face_rectangle"]["height"]
src=cv.imread(filepath1)#開啟jpg檔案       
cv.namedWindow('input_image', cv.WINDOW_NORMAL)#彈出視窗命名,視窗自動大小
cv.rectangle(src,(l,t),(l+w,t+h), (255,0,0),1)#畫框
# height, width, channel=(360, 480, 3)
h,w,c = src.shape
cv.resizeWindow('input_image',int(w/3),int(h/3))
cv.imshow('input_image', src)#顯示圖形
#img: 影象,起始座標,終點座標,顏色,線寬。 
cv.waitKey(0)#等鍵盤動作
cv.destroyAllWindows() #  關閉所有視窗
print(req_dict["faces"][0]["attributes"]["gender"]["value"])
  1. 人臉對比程式碼如下:
import requests#網路訪問控制元件
from json import JSONDecoder#網際網路資料交換標準格式
import cv2 as cv#影象處理控制元件
 
http_url ="https://api-cn.faceplusplus.com/facepp/v3/compare"#face++apiDETECT模組
key =""#開發人員識別碼
secret =""
image_file1="c:\\python\\image\\f1.jpg"
image_file2="c:\\python\\image\\f2.jpg"#影象位置
data = {"api_key":key, "api_secret": secret}
#資料格式化準備傳送到face,詞典格式json
files = {"image_file1": open(image_file1, "rb"),"image_file2": open(image_file2, "rb")}#準備開啟
response = requests.post(http_url, data=data, files=files)#用post方式(還有get)傳送資料到網站
req_con = response.content.decode('utf-8')#網頁解碼
req_dict = JSONDecoder().decode(req_con)#把json解碼成python詞典格式
print(req_dict)
 
image1=cv.imread(image_file1)
image2=cv.imread(image_file2)       
cv.namedWindow('image1', cv.WINDOW_NORMAL)#彈出視窗命名,視窗自動大小
cv.namedWindow('image2', cv.WINDOW_NORMAL)
h1,w1,c1=image1.shape
h2,w2,c2=image2.shape
cv.resizeWindow('image1',int(w1/3),int(h1/3))
cv.resizeWindow('image2',int(w2/3),int(h2/3))
cv.moveWindow('image2',int(w1/3),0)
 
cv.imshow('image1',image1)#顯示圖形
cv.imshow('image2',image2)
 
#img: 影象,起始座標,終點座標,顏色,線寬。 
cv.waitKey(0)#等鍵盤動作
cv.destroyAllWindows() #  關閉所有視窗