属于内测接口,需要申请哦。

邀测帖子:http://ai.baidu.com/forum/topic/show/870370

接口说明:http://ai.baidu.com/docs#/Body-API/fd9bc832

识别图片中的手势类型,返回手势名称、手势矩形框、概率分数,可识别15种手势,支持动态手势识别,适用于手势特效、智能家居手势交互等场景;支持的15类手势列表:手指、掌心向前、拳头、OK、祈祷、作揖、作别、单手比心、点赞、diss、rock、掌心向上、双手比心(3种)

-----------------------------------------------------下面开始代码----------------------------------------------------

手势识别接口示例代码-(JavaAPI)

import java.net.URLEncoder;

import com.alibaba.fastjson.JSON;

import com.xs.body.bean.GestureBean;

import com.xs.util.baidu.Base64Util;

import com.xs.util.baidu.FileUtil;

import com.xs.util.baidu.HttpUtil;

/**

* 手势识别Java-API调用示例代码

* Base64Util、FileUtil、HttpUtil工具类下载地址

* http://aixiaoshuai.mydoc.io/?t=234826

* @author 小帅丶

*/

public class GestureAPISample {

public static String GESTURE_URL = "https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture";

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

//返回字符串

//String result = getGestureResult("G:/gesture/摇滚.jpg", "自己的token");

//System.out.println(result);

//返回java对象

GestureBean gestureBean = getGestureBean("G:/ht.jpg", "自己的token");

System.out.println("识别个数:"+gestureBean.getResult_num());

String gestureName = "";

for (int i = 0; i < gestureBean.getResult().size(); i++) {

if(gestureBean.getResult().get(i).getClassname().equals("Face")){

System.out.println("此图中识别出人脸");

}else{

gestureName += GestureClassNameWorkBook.getGestureName(gestureBean.getResult().get(i).getClassname())+",";

}

}

System.out.println("识别的手势:"+gestureName.substring(0, gestureName.length()-1));

}

/**

* 识别图片中的手势类型,返回手势名称、手势矩形框、概率分数,可识别15种手势,支持动态手势识别,适用于手势特效、智能家居手势交互等场景;

* 支持的15类手势列表:手指、掌心向前、拳头、OK、祈祷、作揖、作别、单手比心、点赞、diss、rock、掌心向上、双手比心(3种)。

* @param imagePath 图片本地路径

* @param accessToken 应用AccessToken

* @return String

* @throws Exception

*/

private static String getGestureResult(String imagePath, String accessToken) throws Exception {

byte[] imgData = FileUtil.readFileByBytes(imagePath);

String imgStr = Base64Util.encode(imgData);

String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");

// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。

String result = HttpUtil.post(GESTURE_URL, accessToken, param);

return result;

}

/**

* 识别图片中的手势类型,返回手势名称、手势矩形框、概率分数,可识别15种手势,支持动态手势识别,适用于手势特效、智能家居手势交互等场景;

* 支持的15类手势列表:手指、掌心向前、拳头、OK、祈祷、作揖、作别、单手比心、点赞、diss、rock、掌心向上、双手比心(3种)。

* @param imagePath 图片本地路径

* @param accessToken 应用AccessToken

* @return GestureBean

* @throws Exception

*/

private static GestureBean getGestureBean(String imagePath, String accessToken) throws Exception {

byte[] imgData = FileUtil.readFileByBytes(imagePath);

String imgStr = Base64Util.encode(imgData);

String param = "image=" + URLEncoder.encode(imgStr,"UTF-8");

// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。

String result = HttpUtil.post(GESTURE_URL, accessToken, param);

GestureBean gestureBean = JSON.parseObject(result,GestureBean.class);

return gestureBean;

}

}

示例图片

处理后返回的内容

识别个数:2

识别的手势:拳头,掌心向前

识别返回的JSON数据 可以看到识别出2个手势 一个为Fist  另一个为Palm

{

"log_id": 3773186178434508300,

"result_num": 2,

"result": [

{

"probability": 0.9931142926216125,

"top": 153,

"height": 299,

"classname": "Fist",

"width": 269,

"left": 499

},

{

"probability": 0.9748011231422424,

"top": 44,

"height": 455,

"classname": "Palm",

"width": 423,

"left": 86

}

]

}

需要用到的GestureBean

import java.util.List;

/**

* 手势Bean 省略set/get

* @author 小帅丶

*/

public class GestureBean {

//手势数目

private int result_num;

//检测到的目标,手势、人脸

private List result;

//唯一的log id,用于问题定位

private long log_id;

/**

* classname目标所属类别,15种手势、other、face

* top目标框上坐标

* widt目标框的宽

* left目标框最左坐标

* height目标框的高

* probability目标属于该类别的概率

* @author 小帅丶

*/

public static class Result{

private double probability;

private int top;

private int height;

private String classname;

private int width;

private int left;

}

}

classname转中文常量代码

package com.xs.body;

/**

* 手势中文说明

* @author 小帅丶

*

*/

public class GestureClassNameWorkBook {

/**

* 根据classname返回中文对应的名称

* @param classname 手势所属类别,15种手势、other、face

* @return String

* @throws Exception

*/

public static String getGestureName(String classname) throws Exception {

String gestureName ="";

if(classname.equals("Thumb_down")){

gestureName="踩|拇指向下";

return gestureName;

}else if (classname.equals("Ok")) {

gestureName="OK";

return gestureName;

}else if (classname.equals("ILY")) {

gestureName="Rock";

return gestureName;

}else if (classname.equals("Heart_single")) {

gestureName="单手比心";

return gestureName;

}else if (classname.equals("Thumb_up")) {

gestureName="点赞|拇指向上";

return gestureName;

}else if (classname.equals("Prayer")) {

gestureName="祈祷";

return gestureName;

}else if (classname.equals("Fist")) {

gestureName="拳头";

return gestureName;

}else if (classname.equals("Point")) {

gestureName="点|食指";

return gestureName;

}else if (classname.equals("Heart_1")||classname.equals("Heart_2")||classname.equals("Heart_3")) {

gestureName="双手比心";

return gestureName;

}else if (classname.equals("Palm")) {

gestureName="掌心向前";

return gestureName;

}else if (classname.equals("Palm_up")) {

gestureName="掌心向上";

return gestureName;

}else if (classname.equals("Honour")) {

gestureName="作别|告别";

return gestureName;

}else if (classname.equals("Rock")) {

gestureName="摇滚";

return gestureName;

}else if (classname.equals("Congratulation")) {

gestureName="作揖|祝贺";

return gestureName;

}else{

gestureName ="未能匹配的手势:"+classname;

return gestureName;

}

}

}

需要用到的第三方的Jar

com.alibaba

fastjson

1.2.35

-----------------------------------------------------代码结束-----------------------------------------------------

classname与中文的对应

classname中文(个人整理非官方)

Thumb_down踩|拇指向下

OkOK

ILYRock

Heart_single单手比心

Thumb_up点赞|拇指向上

Prayer祈祷

Fist拳头

Point点|食指

Heart_1|Heart_2|Heart_3双手比心

Palm掌心向前

Palm_up掌心向上

Honour作别|告别

Congratulation作揖|祝贺

Face人脸

Rock摇滚

代码地址     https://gitee.com/xshuai/ai/tree/master/AIDemo/src/main/java/com/xs/body

java 手势识别_【人体分析-手势识别】-Java示例代码相关推荐

  1. 百度AI开放平台人体分析_人像分割的Python示例代码

    首发于:https://www.jwldata.com/archives/48.html 人像分割有些API需要用到opencv处理返回结果. https://pypi.org/project/ope ...

  2. java基准测试_微基准测试进入Java 9

    java基准测试 我已经几个月没有在这里写文章了,这种例外还会继续. 我计划在明年三月左右恢复写作. 本文末尾的说明. 等待! 不完全是最后,因为您可以向下滚动. 它在文章结尾处. 继续阅读! 三年前 ...

  3. Java继承_这10道Java面试题!大部分的人回答不出来

    1.为什么等待和通知是在 Object 类而不是 Thread 中声明的? 2.为什么Java中不支持多重继承? 3.为什么Java不支持运算符重载? 4.为什么 String 在 Java 中是不可 ...

  4. 网易 java工程师_网易微专业Java开发工程师

    Java 基础 1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境. JRE:Java Run ...

  5. java 委托_动态代理:Java开发必学

    一句话概括:java 动态代理通过反射机制,可在不修改原代码的情况下添加新的功能,应用于多种场景,简单.实用.灵活,是 java 开发必学知识,本文将对动态代理使用进行详细介绍. 1. 引言 最近开发 ...

  6. 常用的java虚拟机_带你了解 JAVA虚拟机 面试必备

    Java运行时数据区: Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途.创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有 些区域则是依赖 ...

  7. java 精通_你真的精通Java吗?

    简历和自我介绍上经常能够读到"精通Java"这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点.不能给自己加分了.可是事实真是这样吗? 对于语言的学习,我有一 ...

  8. 斯坦福java下载_斯坦福解析器java错误

    我正在研究NLP,我想用斯坦福解析器从文本中提取名词短语,我使用的解析器版本是3.4.1 这是我使用的示例代码 package stanfordparser; import java.util.Col ...

  9. java基准测试_星期五基准功能Java

    java基准测试 让我们的产品所有者有一天变得疯狂,并要求您执行以下操作: From a set of Strings as follows : " marco_8"," ...

  10. 精通java益处_你真的精通Java吗?

    简历和自我介绍上经常能够读到"精通Java"这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点.不能给自己加分了.可是事实真是这样吗? 对于语言的学习,我有一 ...

最新文章

  1. Fitnesse测试系列--如何做成模块Module供调用
  2. 数据库——高级匹配条件
  3. mysql 的自动启动 使用配置文件 /etc/my.cnf
  4. 整理记录word2016小技巧,自用
  5. 重写、重构、重载区别
  6. 如何给领导打造一款掌上财务管理驾驶舱?
  7. ActiveMQ-为什么需要消息中间件及优缺点
  8. C# 中的readonly属性
  9. 电脑管理器地址栏 按右键会有的功能
  10. Informix ODBC 设置
  11. 疑似APT组织响尾蛇的JavaScript脚本调试分析
  12. 想撤回没门!电脑版微信、QQ 、TIM的防撤回工具
  13. oracle客户端 PLSQL安装配置教程
  14. 微信ubuntu版服务器,Ubuntu 18.04 安装微信(Linux通用)
  15. 冒犯有时是必要的:如何开启一段亲密关系?
  16. 2022年PYTHON应用行业,PYTHON就业方向
  17. 相关性扫描匹配CSM与分支限界
  18. Kettle/Pentaho的Carte集群配置和使用
  19. 华为IoT首席架构师王启军:全栈工程师“养成记”
  20. 连续复利怎么用计算机算,请问银行的连续复利计算公式

热门文章

  1. 使用CODERUN部署阿里云KUBERNETES
  2. python.day.04——常用数据类型(一):strList
  3. 优云软件又双叒通过CMMI ML3评估 , 研发和质量管理水平创新高
  4. Git提交代码的处理流程(转)
  5. 【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库(二)
  6. html入门的一些东西
  7. IE 下 telerik RadAjaxManager 多次请求,LoadingPanel 点击消失
  8. java的中文源代码
  9. 按钮按一下画个直线_直线导轨数控车床概念和作用
  10. 2580 php to yuan,PHP版汉字转拼音类-ASCII版本 | 学步园