face++實現人臉識別及人臉相似度對比
阿新 • • 發佈:2018-12-21
轉自https://blog.csdn.net/qq_38181012/article/details/81124217
- 使用face++,先獲取key和secret
- 下方是人臉識別,還添加了畫出人臉輪廓的正方形
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"])
- 人臉對比程式碼如下:
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() # 關閉所有視窗