java百度api人脸识别_百度人脸识别api demo
自己用Java写的一个可以参考一下,我这种5年没写过代码的人都能写,难道比我还新手?你需要多一些信念!
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;
}
}
java百度api人脸识别_百度人脸识别api demo相关推荐
- 人脸识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案
云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...
- 人脸反光识别和读数识别_云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案...
云端人脸识别-人脸识别SDK+API-人脸识别闸机解决方案 人脸识别闸机-人脸识别闸机解决方案 软硬一体的人脸识别闸机解决方案,提升人员系统化管理的安全性与便捷性 方案构成 针对人员出入的闸机及门禁场 ...
- python人脸特征提取_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...
之前写过一篇关于实现人脸识别的文章,Z先生点记:Pyqt5 + 百度 API 打造一个图像人脸识别.分割的小程序zhuanlan.zhihu.com 里面用到的技术是通过调用百度 API 实现的,本 ...
- java百度地图逆地址解析_百度地图逆地址解析
什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HTTP ...
- webbrowser 百度列表点击_百度OCR和百度翻译api申请教程
百度api的免费额度在同行中算是非常高的,很多软件或者网页都会调用百度的相关api,方便了很多人.调用识别api的免费额度是每日50000次. 同时,百度翻译的免费额度也非常高,每月的免费额度达到 2 ...
- 人脸识别与膜虹识别_超越人脸识别——虹膜识别vs静脉识别
谈及人脸识别,那简直是人尽皆知,应用广泛了.以往玩笑"靠脸"吃饭,如今已不再是玩笑,随着科技发展越发迅猛,我们的生活中德"刷脸"都在慢慢落后.其中"盗 ...
- 人物关系 人脸识别_「人脸识别」可以代替「人像鉴定」吗?
刷脸支付.刷脸安检.刷脸取快递.刷脸住酒店--人脸识别正在替代钥匙.公交卡.身份证.银行卡等,迅速渗透人们日常生活和工作的方方面面,一个"全民刷脸"的时代正在加速到来. 在司法鉴定 ...
- 夜间环境人脸识别_动态人脸识别系统的优势
TH-894是一款天煌电子全新的三防动态人脸识别xt终端采用嵌入式系统.功耗低,运行更稳定.数据更安全.使用高性能智能处理器,基于深度学习的人脸识别与抓拍信息提取,极大的提高了人脸抓拍率.采用夜间红外 ...
- 百度移动应用安卓_安卓车牌识别应用于移动警务通提高使用体验度
通常交警在处理路边违章停车的情况时,采用的是传统的手工录入车牌信息的方式,在面对庞大数量的汽车时显得力不从心,目前,我国警务通.停车场手持收费机等移动终端的使用比较普及,如果在这些终端上能够集成车牌识 ...
- 百度seo排名规则_百度关键词seo优化排名如何上首页
无涯孤客百度关键词seo优化排名快速上首页,是通过使用多种百度算法优化,让网站在搜索引擎上排名更好,我们做百度关键词排名的话,要比市面上绝大公司做的要稳定,也希望各位可以相信我们,我们可以将百度关键词 ...
最新文章
- MS SQL专用管理员连接DAC
- ebs 供应商地点信息_实探荣耀办公地:与高通接近达成合作,加快供应商整合脚步...
- php mysqli::close()
- Android:日常学习笔记(6)——探究活动(3)
- Python基础02-序列及通用操作
- 深入浅出SQL(1)
- argv python 提示输入_Python解释器
- 图Graph--最小生成树
- asp.net core权限模块的快速构建
- 栈溢出笔记1.8 字符串问题
- 单行溢出文本显示省略号的方法(兼容IE FF)
- android 布局圆变椭圆,Android实现自定义圆形、圆角和椭圆ImageView(使用Xfermode图形渲染方法)...
- yaf index.php,yaf框架访问路由为什么始终访问INDEX下的INDEX控制器下的INDEX方法
- ArcGIS 10.5 及 ArcGIS Server下载安装破解环境配置
- PyCharm黄色波浪线提示: Simplify chained comparison
- python常用marker
- 7-12 个位数字统计 (15 分)
- 【图解HTTP】|【09】Web的攻击技术
- 海尔云悦2db微型计算机,客厅小伙伴 海尔云悦mini2迷你主机评测
- 微信小程序----App生命周期
热门文章
- python: how to delete a given item if it exist in the list
- Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman
- 转 C++STL之string
- JQuery中的事件以及动画
- 30个在线学习设计与开发的站点
- TFS中的测试计划(十)
- Global.asax
- Ansible06-管理roles
- Ansible01-Ansible基础和部署