后端:SpringBoot3.1.x、Mysql8.0、MybatisPlus
小程序:Uniapp、Vue3
项目案例图
注:小程序脚手架前往仓库拉取即可
腾讯云神图·人脸识别(FaceRecognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
本文将介绍使用人脸检测与分析、人脸验证(人员验证、人脸验证)、人脸静态活体检测.
检测给定图片中的人脸(Face)的位置、相应的面部属性和人脸质量信息,位置包括(x,y,w,h),面部属性包括性别(gender)、年龄(age)、表情(expression)、魅力(beauty)、眼镜(glass)、发型(hair)、口罩(mask)和姿态(pitch,roll,yaw),人脸质量信息包括整体质量分(score)、模糊分(sharpness)、光照分(brightness)和五官遮挡分(completeness)。
参数名称
必选
类型
描述
MaxFaceNum
否
Integer
最多处理的人脸数目。默认值为1(仅检测图片中面积最大的那张人脸),最大值为120。此参数用于控制处理待检测图片中的人脸个数,值越小,处理速度越快。示例值:1
MinFaceSize
人脸长和宽的最小尺寸,单位为像素。默认为34。建议不低于34。低于MinFaceSize值的人脸不会被检测。示例值:40
Image
String
图片base64数据,base64编码后大小不可超过5M。支持PNG、JPG、JPEG、BMP,不支持GIF图片。
Url
NeedFaceAttributes
是否需要返回人脸属性信息(FaceAttributesInfo)。0为不需要返回,1为需要返回。默认为0。非1值均视为不需要返回,此时FaceAttributesInfo不具备参考意义。最多返回面积最大的5张人脸属性信息,超过5张人脸(第6张及以后的人脸)的FaceAttributesInfo不具备参考意义。提取人脸属性信息较为耗时,如不需要人脸属性信息,建议关闭此项功能,加快人脸检测速度。示例值:0
NeedQualityDetection
是否开启质量检测。0为关闭,1为开启。默认为0。非1值均视为不进行质量检测。最多返回面积最大的30张人脸质量分信息,超过30张人脸(第31张及以后的人脸)的FaceQualityInfo不具备参考意义。建议:人脸入库操作建议开启此功能。示例值:0
FaceModelVersion
人脸识别服务所用的算法模型版本。目前入参支持“2.0”和“3.0“两个输入。2020年4月2日开始,默认为“3.0”,之前使用过本接口的账号若未填写本参数默认为“2.0”。不同算法模型版本对应的人脸识别算法不同,新版本的整体效果会优于旧版本,建议使用“3.0”版本。示例值:3.0
NeedRotateDetection
是否开启图片旋转识别支持。0为不开启,1为开启。默认为0。本参数的作用为,当图片中的人脸被旋转且图片没有exif信息时,如果不开启图片旋转识别支持则无法正确检测、识别图片中的人脸。若您确认图片包含exif信息或者您确认输入图中人脸不会出现被旋转情况,请不要开启本参数。开启后,整体耗时将可能增加数百毫秒。示例值:0
人脸信息列表。
名称
X
人脸框左上角横坐标。人脸框包含人脸五官位置并在此基础上进行一定的扩展,若人脸框超出图片范围,会导致坐标负值。若需截取完整人脸,可以在完整分completess满足需求的情况下,将负值坐标取0。
Y
人脸框左上角纵坐标。人脸框包含人脸五官位置并在此基础上进行一定的扩展,若人脸框超出图片范围,会导致坐标负值。若需截取完整人脸,可以在完整分completess满足需求的情况下,将负值坐标取0。
Width
人脸框宽度。
Height
人脸框高度。
FaceAttributesInfo
人脸属性信息,包含性别(gender)、年龄(age)、表情(expression)、魅力(beauty)、眼镜(glass)、口罩(mask)、头发(hair)和姿态(pitch,roll,yaw)。只有当NeedFaceAttributes设为1时才返回有效信息。
FaceQualityInfo
人脸质量信息,包含质量分(score)、模糊分(sharpness)、光照分(brightness)、遮挡分(completeness)。只有当NeedFaceDetection设为1时才返回有效信息。注意:此字段可能返回null,表示取不到有效值。
重要的是FaceAttributesInfo、FaceQualityInfo两个对象函数了
PersonId
是
图片base64数据。若图片中包含多张人脸,只选取其中人脸面积最大的人脸。支持PNG、JPG、JPEG、BMP,不支持GIF图片。
图片的Url。图片的Url、Image必须提供一个,如果都提供,只使用Url。图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。非腾讯云存储的Url速度和稳定性可能受一定影响。若图片中包含多张人脸,只选取其中人脸面积最大的人脸。支持PNG、JPG、JPEG、BMP,不支持GIF图片。
QualityControl
图片质量控制。0:不进行控制;1:较低的质量要求,图像存在非常模糊,眼睛鼻子嘴巴遮挡至少其中一种或多种的情况;2:一般的质量要求,图像存在偏亮,偏暗,模糊或一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,至少其中三种的情况;3:较高的质量要求,图像存在偏亮,偏暗,一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,其中一到两种的情况;4:很高的质量要求,各个维度均为最好或最多在某一维度上存在轻微问题;默认0。若图片质量不满足要求,则返回结果中会提示图片质量检测不符要求。
是否开启图片旋转识别支持。0为不开启,1为开启。默认为0。本参数的作用为,当图片中的人脸被旋转且图片没有exif信息时,如果不开启图片旋转识别支持则无法正确检测、识别图片中的人脸。若您确认图片包含exif信息或者您确认输入图中人脸不会出现被旋转情况,请不要开启本参数。开启后,整体耗时将可能增加数百毫秒。
使用人员ID、Image就行了
Score
Float
给定的人脸照片与PersonId对应的相似度。若PersonId下有多张人脸(Face),会融合多张人脸信息进行验证。
IsMatch
Boolean
是否为同一人的判断。
人脸识别所用的算法模型版本。
RequestId
唯一请求ID,每次请求都会返回。定位问题时需要提供该次请求的RequestId
图片base64数据,base64编码后大小不可超过5M。若图片中包含多张人脸,只选取其中人脸面积最大的人脸。支持PNG、JPG、JPEG、BMP,不支持GIF图片。
图片质量控制。0:不进行控制;1:较低的质量要求,图像存在非常模糊,眼睛鼻子嘴巴遮挡至少其中一种或多种的情况;2:一般的质量要求,图像存在偏亮,偏暗,模糊或一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,至少其中三种的情况;3:较高的质量要求,图像存在偏亮,偏暗,一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,其中一到两种的情况;4:很高的质量要求,各个维度均为最好或最多在某一维度上存在轻微问题;默认0。若图片质量不满足要求,则返回结果中会提示图片质量检测不符要求。示例值:0
人脸验证的参数都一样的明白两个接口的业务场景使用即可
用于对用户上传的静态图片进行人脸活体检测。与动态活体检测的区别是:静态活体检测中,用户不需要通过唇语或摇头眨眼等动作来识别。
图片base64数据,base64编码后大小不可超过5M(图片的宽高比请接近3:4,不符合宽高比的图片返回的分值不具备参考意义)。支持PNG、JPG、JPEG、BMP,不支持GIF图片。
人脸识别服务所用的算法模型版本。目前入参支持“2.0”和“3.0“两个输入。2020年4月2日开始,默认为“3.0”,之前使用过本接口的账号若未填写本参数默认为“2.0”。2020年11月26日后开通服务的账号仅支持输入“3.0”。不同算法模型版本对应的人脸识别算法不同,新版本的整体效果会优于旧版本,建议使用“3.0”版本。示例值:3.0
返回参数
活体打分,取值范围[0,100],分数一般落于[80,100]区间内,0分也为常见值。推荐相大于87时可判断为活体。可根据具体场景自行调整阈值。本字段当且仅当FaceModelVersion为2.0时才具备参考意义。示例值:99
人脸识别所用的算法模型版本。示例值:3.0
IsLiveness
活体检测是否通过。本字段只有FaceModelVersion为3.0时才具备参考意义。示例值:1
唯一请求ID,每次请求都会返回。定位问题时需要提供该次请求的RequestId。
我们已经初步的认识了这三个api接口的参数那么开始实战操作吧
先进行在线的操作
人员库ID很重要嗷后续需要此id来查找是哪个人员库当中的
GroupIds是希望搜索的人员库列表刚刚我们创建了一个人员库叫yby6
上传刚刚的人员填写组ID其他的参数默认即可
页面的操作我就带大家玩到这里了,剩下的同学们可以自行玩玩!
com.tencentcloudapitencentcloud-sdk-java3.1.416com.tencentcloudapitencentcloud-sdk-java-iai3.1.416创建腾讯云配置新建config文件夹新增TencentConfig.java配置文件
后续代码我都是在调试API当中完成的
这里我为大家已经写好了一份工具类直接使用即可!!!!!
这里我们使用人员ID搜索
找一个有露脸的图片去百度找个在线Base64转码
复制Base64打开接口调试工具
userId先填个3
再次新增则会提示已经存在不能新增人员信息
可以看到score分数为100isMatch为true表示识别成功
我们放一张不同的人脸进去试试看
可以看到score分数小于100isMatch为fase表示识别失败不是同一个人
目前我们的接口就已经编写完毕啦~
创建人脸识别页面face_camera.vue
注意记得放开后端代码当中的活体检测功能这里我们使用拍照即可识别活体