官方网址API文档
https://cloud.tencent.com/document/product/867/44987?from=console_document_search
1、pom依赖
XML
<!-- 腾讯云 SDK -->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java-iai</artifactId>
<version>3.1.1171</version>
</dependency>
<!-- 导入Json格式化依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
version>1.2.83</version>
</dependency>
2、工具类TengxunyunFaceUtils
java
import com.alibaba.fastjson.JSONObject;
import com.tencentcloudapi.common.AbstractModel;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.iai.v20200303.IaiClient;
import com.tencentcloudapi.iai.v20200303.models.CompareFaceRequest;
import com.tencentcloudapi.iai.v20200303.models.CompareFaceResponse;
import java.util.HashMap;
public class TengxunyunFaceUtils {
private static String ENDPOINT = "iai.tencentcloudapi.com";
private static String SECRET_ID = "自己的secret_id";
private static String SECRET_KEY = "自己的秘钥secret_key";
public static void main(String[] args) throws TencentCloudSDKException {
faceCompare("https://测试图片连接.jpg","https://测试图片连接.jpg",0l);
}
/**
*
* @param imgA 图A,url链接或者base64
* @param imgB 图B,url链接或者base64
* @param qualityControl 图片质量控制
* 0: 不进行控制;默认
* 1: 较低的质量要求,图像存在非常模糊,眼睛鼻子嘴巴遮挡至少其中一种或多种的情况;
* 2: 一般的质量要求,图像存在偏亮,偏暗,模糊或一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,至少其中三种的情况;
* 3: 较高的质量要求,图像存在偏亮,偏暗,一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,其中一到两种的情况;
* 4: 很高的质量要求,各个维度均为最好或最多,在某一维度上存在轻微问题;
* @return
* @throws TencentCloudSDKException
*/
public static HashMap faceCompare(String imgA, String imgB, Long qualityControl) throws TencentCloudSDKException {
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性
// 以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
Credential cred = new Credential(SECRET_ID, SECRET_KEY);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint(ENDPOINT);
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
IaiClient client = new IaiClient(cred, "ap-beijing", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
CompareFaceRequest req = new CompareFaceRequest();
//如果是链接会使用链接,如果是base64会使用base64
if(imgA.contains("https://")){
req.setUrlA(imgA);
}else{
req.setImageA(imgA);
}
if(imgB.contains("https://")){
req.setUrlB(imgB);
}else{
req.setImageB(imgB);
}
req.setFaceModelVersion("3.0");
//图片质量控制 若图片质量不满足要求,则返回结果中会提示图片质量检测不符要求
//0: 不进行控制;默认
//1: 较低的质量要求,图像存在非常模糊,眼睛鼻子嘴巴遮挡至少其中一种或多种的情况;
//2: 一般的质量要求,图像存在偏亮,偏暗,模糊或一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,至少其中三种的情况;
//3: 较高的质量要求,图像存在偏亮,偏暗,一般模糊,眉毛遮挡,脸颊遮挡,下巴遮挡,其中一到两种的情况;
//4: 很高的质量要求,各个维度均为最好或最多,在某一维度上存在轻微问题;
req.setQualityControl(qualityControl);
//是否开启图片旋转识别支持取值范围:0为不开启,1为开启
req.setNeedRotateDetection(1L);
//System.out.println("请求人脸比对请求参数:"+AbstractModel.toJsonString(req));
//System.out.println("【请求腾讯云】人脸比对请求参数:" + AbstractModel.toJsonString(req));
// 返回的resp是一个CompareFaceResponse的实例,与请求对象对应
CompareFaceResponse resp = client.CompareFace(req);
JSONObject jsonObject = JSONObject.parseObject(AbstractModel.toJsonString(resp));
System.out.println("【请求腾讯云】人脸比对请求源码结果:" + jsonObject.toString());
//比较结果数值
String Score = null;
//错误信息
String message = null;
//错误码
String error = "0";
if (jsonObject.getJSONObject("Error") == null) {
Score = jsonObject.getString("Score");
} else {
error = "1";
message = jsonObject.getJSONObject("Error").getString("Message");
}
HashMap hashMap = new HashMap<>();
hashMap.put("Score", Score);
hashMap.put("Error", error);
hashMap.put("Message", message);
System.out.println("人脸比对返回请求结果(java解析处理后):" + hashMap);
return hashMap;
}
}