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()