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() #  关闭所有窗口

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RetinaFace ArcFace是一种常用于人脸识别的深度学习算法。RetinaFace是一种人脸检测算法,用于在图像中识别和定位人脸。它采用了全卷积神经网络结构,并利用了特征金字塔网络来多尺度地检测不同大小的人脸。RetinaFace使用了anchor-based方法,在不同尺度上生成候选框,并通过网络预测每个候选框的边界框和类别概率。 而ArcFace是一种人脸识别算法,用于在给定的人脸图像中提取具有高度可辨识性的人脸特征向量。ArcFace人脸图像映射到一个高维特征空间,并通过特殊的角度余弦损失函数,在特征空间中将同一个人脸的特征向量拉近,并将不同人脸的特征向量推开。这样,在特征空间中,同一个人脸的特征向量之间的相似度会很高,而不同人脸的特征向量之间的相似度会很低。 结合RetinaFace和ArcFace,可以实现人脸检测和识别的整个流程。首先使用RetinaFace检测人脸,并获取人脸的位置和边界框。然后,将这些人脸区域图像输入ArcFace网络,提取每个人脸的特征向量。接下来,可以使用这些特征向量来比较和匹配不同人脸相似度,以实现人脸的识别和验证。 RetinaFace ArcFace人脸识别领域具有较好的性能和广泛的应用。它可以应用于人脸识别门禁系统、人脸支付、人脸考勤、人脸身份验证等多个领域。通过这两种算法的组合,可以提高人脸识别的准确性和鲁棒性,实现更加安全和高效的人脸识别技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值