import com.huaweicloud.frs.client.param.AuthInfo;
import com.huaweicloud.frs.client.result.CompareFaceResult;
import com.huaweicloud.frs.client.service.FrsClient;
import com.huaweicloud.frs.common.FrsException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class FaceCompareUtil {
public static void main(String[] args) {
System.out.println(faceCompare("https://mian-ju-mi-liao.obs.cn-east-3.myhuaweicloud.com/1590134042000.png",
"https://mian-ju-mi-liao.obs.cn-east-3.myhuaweicloud.com/1590134042000.png"));
//System.out.println(faceCompare("https://kuaiyun.obs.cn-north-4.myhuaweicloud.com:443/111.jpg",ImageToBase64("C:\\Users\\64966\\Desktop\\111.jpg")));
//System.out.println(NetImageToBase64("https://kuaiyun.obs.cn-north-4.myhuaweicloud.com:443/111.jpg"));
}
public static Boolean faceCompare(String imgUrl,String baseUrl){
String ak = "9X2BAEMJPLCDCDBSJU5O";
String sk = "JoTVjydaezYIbUIR2V6U0GveXnyYSILGgX0sPUq5";
String projectId = "0831880c9500261e2fb7c00e93b61a90";
//Service info
String url = "https://face.cn-north-4.myhuaweicloud.com";
String region = "cn-north-4";
AuthInfo authInfo = new AuthInfo(url, region, ak, sk);
FrsClient frsClient = new FrsClient(authInfo, projectId);
try {
//CompareFaceResult compareFaceResult = frsClient.getCompareService().compareFaceByBase64(NetImageToBase64(imgUrl), NetImageToBase64(baseUrl));
CompareFaceResult compareFaceResult = frsClient.getCompareService().compareFaceByObsUrl(imgUrl, baseUrl);
//判断是否返回异常
if(compareFaceResult.getSimilarity()>0.93){
return true;
}else{
return false;
}
} catch (FrsException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
//网络图片转base64
private static String NetImageToBase64(String netImagePath){
final ByteArrayOutputStream data = new ByteArrayOutputStream();
try {
// 创建URL
URL url = new URL(netImagePath);
final byte[] by = new byte[1024];
// 创建链接
final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(50000);
InputStream is = conn.getInputStream();
// 将内容读取内存中
int len = -1;
while ((len = is.read(by)) != -1) {
data.write(by, 0, len);
}
// 关闭流
is.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data.toByteArray());
}
/**
* 本地图片转换Base64的方法
* @param imgPath
*/
public static String ImageToBase64(String imgPath) {
InputStream in = null;
byte[] data = null;
// 读取图片字节数组
try {
in = new FileInputStream(imgPath);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(data);
}
//base64字符串转化成图片
public static String GenerateImage(String imgStr)
{ //对字节数组字符串进行Base64解码并生成图片
BASE64Decoder decoder = new BASE64Decoder();
try
{
//Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for(int i=0;i<b.length;++i)
{
if(b[i]<0)
{//调整异常数据
b[i]+=256;
}
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(b);
}
catch (Exception e)
{
return "";
}
}
}
Java版本华为云【人脸对比】V1接口对接
最新推荐文章于 2024-01-09 17:49:03 发布