java百度api人脸识别_百度人脸识别api demo

news/2024/7/9 7:01:36

自己用Java写的一个可以参考一下,我这种5年没写过代码的人都能写,难道比我还新手?你需要多一些信念!

46e203c5e6af3ac170d8aa9de41a2d89.gif

package com.baidu.cloudservice.bfr;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.nio.charset.Charset;

import java.util.Date;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;

import com.baidubce.BceClientException;

import com.baidubce.util.DateUtils;

public class BFRSign {

private static final String DEFAULT_ENCODING = "UTF-8";

private static final Charset UTF8 = Charset.forName(DEFAULT_ENCODING);

public static void main(String[] args) throws Exception {

// System.out.println(DateUtils.formatAlternateIso8601Date(new Date()));

String accessKey = "xxxxxxxxxxxxxxxxxxxxxxxx";

String secretKey = "xxxxxxxxxxxxxxxxxxxxxxxx";

String host = "face.bj.baidubce.com";

//String path = "/v1/app";//工程

//String path = "/v1/app/40004/group";//组

//String path = "/v1/app/40004/person";  //人物

//String path ="/v1/app/40004/person/Steve";//验证图片是否属于某个人

String path ="/v1/app/40004/group/yerik"; //验证图片是否属于某个组

String timestamp = DateUtils.formatAlternateIso8601Date(new Date());

int expiresInSeconds = 18000;

String CanonicalURI = URLEncoder.encode(path, "UTF-8").replace("%2F","/");

System.out.println("CanonicalURI: "+CanonicalURI);

//        String queryString=new String("verify");

String queryString=new String("identify");

String canonicalQueryString =canonicalQueryString(queryString);

//String requestMethod="GET";

String requestMethod="POST";

//String requestMethod="PUT";

String canonicalHeaders = "host:"+host;

String CanonicalRequest = joinN("\n", new String[] { requestMethod,CanonicalURI, canonicalQueryString, canonicalHeaders });

System.out.println("CanonicalRequest: "+CanonicalRequest);

/*输出结果、请求内容

{"appId":"40004"}

{ "groupName": "yerik"}

{

"personName": "Steve",

"groupName": "yerik",

"faces": [

{

"bosPath":"yerik-bfr/1.jpg"

},

{

"bosPath":"yerik-bfr/2.jpg"

},

{

"bosPath":"yerik-bfr/3.jpg"

},

{

"bosPath":"yerik-bfr/4.jpg"

},

{

"bosPath":"yerik-bfr/5.jpg"

},

{

"bosPath":"yerik-bfr/6.jpg"

},

{

"bosPath":"yerik-bfr/7.jpg"

},

{

"bosPath":"yerik-bfr/8.jpg"

}

]

}

{

"bosPath":"yerik-bfr/test1.jpg"

}

*/

//通过AK+时间戳+过期时间拼接成signKeyInfo

String signKeyInfo = "bce-auth-v1" + "/" + accessKey + "/" + timestamp+ "/" + expiresInSeconds;

System.out.println("signKeyInfo: "+signKeyInfo);

//将signKeyInfo与SK加密生成signingKey

String signingKey = sha256Hex(secretKey, signKeyInfo);

System.out.println("signingKey: "+signingKey);

//将signingKey与CanonicalRequest加密生成signature

String signature = sha256Hex(signingKey, CanonicalRequest);

//通过signature合成authorization

String authorization = joinN("/", new String[] { "bce-auth-v1",accessKey, timestamp, String.valueOf(expiresInSeconds), "host",signature });

System.out.println("authorization: \n"+authorization);

System.out.println("URL: \nhttp://"+host+CanonicalURI+"?"+canonicalQueryString);

}

private static String joinN(String split, String[] args) {

String ret = args[0];

for (int i = 1; i < args.length; i++)

ret = ret + split + args[i];

return ret;

}

public static String sha256Hex(String signingKey, String stringToSign) {

try {

Mac mac = Mac.getInstance("HmacSHA256");

mac.init(new SecretKeySpec(signingKey.getBytes(UTF8), "HmacSHA256"));

return new String(Hex.encodeHex(mac.doFinal(stringToSign

.getBytes(UTF8))));

} catch (Exception e) {

throw new BceClientException("Fail to generate the signature", e);

}

}

//canonicalQueryString转换

public static String canonicalQueryString(String queryString) throws Exception{

String canonicalQueryString="";

String[] keyValueList =queryString.split("&");

int position;

String key=null;

String value=null;

if (queryString.isEmpty()){

System.out.println("canonicalQueryString1: "+canonicalQueryString);

return canonicalQueryString;

}else{

for (int i=0;i

position=keyValueList[i].indexOf("=");

if (position<0){

key=URLEncoder.encode(keyValueList[i], "UTF-8");

value="";

}else{

key=URLEncoder.encode(keyValueList[i].substring(0,position), "UTF-8");

value=URLEncoder.encode(keyValueList[i].substring(position+1,keyValueList[i].length()), "UTF-8");

}

//System.out.println("Key"+i+": "+key+"----"+"Value"+i+": "+value);

keyValueList[i]=key+"="+value;

if(i==keyValueList.length-1){

canonicalQueryString=canonicalQueryString+keyValueList[i];

}else{

canonicalQueryString=canonicalQueryString+keyValueList[i]+"&";

}

}

System.out.println("canonicalQueryString2: "+canonicalQueryString);

}

return canonicalQueryString;

}

}


http://lihuaxi.xjx100.cn/news/246849.html

相关文章

工程计算和数据科学中常用的9种测量距离

很多算法中&#xff0c;无论是自动驾驶算法还是人工智能算法&#xff0c;都会涉及到距离测量的内容。例如&#xff1a;欧氏距离或者cos相似度&#xff0c;在KNN、UMAP、HDBSCAN等算法中很常见。 理解这些距离测量使用的具体领域&#xff0c;对于我们理解不同类型的算法至关重要…

Socket-实例

import socket,os,time server socket.socket() server.bind(("localhost",9999)) server.listen()while True:conn,addrserver.accept()print("new conn",addr)while True:print("等待新指令")data conn.recv(1024)if not data:print("客…

Java控件模糊半透明_Android如何实现模糊的半透明窗口 | 学步园

本示例使用自定义主题样式&#xff0c;实现模糊半透明的Activity。1. 定义清单文件(AndroidManifest.xml)package"my.android.test"android:versionCode"1"android:versionName"1.0">android:label"string/app_name"android:theme…

打印数字图形

网址:http://zju.acmclub.com/index.php?appproblem_title&id1&problem_id1034 #include<stdio.h> int main() {int n;while(scanf("%d",&n) ! EOF){int i;for(i 0; i < n; i){ int j;for(j 0; j < n - i - 1; j)printf(" ");…

Microsoft Build 2015

没本事去旧金山&#xff0c;只能默默的守在笔记本前看了…… 首先Azure在全球有19个数据中心了&#xff0c;终于超过亚马逊了&#xff0c;好样的&#xff01;过去12个月Azure有超过500个新功能上线&#xff0c;每月用户增长9万。Azure将会越来越成熟了&#xff0c;只可惜我现在…

windows下安装mysql8.0压缩版

下面总结下安装过程&#xff1a; 首先解压下载好的压缩版本。将解压后mysql的bin文件目录配置系统环境path变量中使用cmd打开命令窗口&#xff0c;输入mysqld --initialize命令初始化mysql的data数据目录&#xff0c;记住初始化完毕后&#xff0c;会在解压目录下生成一个data文…

汽车域控制器

1. 什么是域控制器 过去十多年的汽车智能化和信息化发展产生了一个显著结果就是ECU芯片使用量越来越多。从传统的引擎控制系统、安全气囊、防抱死系统、电动助力转向、车身电子稳定系统&#xff1b;再到智能仪表、娱乐影音系统、辅助驾驶系统&#xff1b;还有电动汽车上的电驱…

linux玩我的世界java版_Linux下安装我的世界(Minecraft)

今天下午突然心血来潮想玩我的世界(Minecraft)&#xff0c;但想想现在是Linux系统。我查阅了网上大部分的教程&#xff0c;都差不多过期了&#xff0c;正准备放弃的时候突然想起来Minecraft是Java写的啊&#xff01;肯定支持Linux平台&#xff0c;便自己调试&#xff0c;果然不…