前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看手相不?【人体分析-手部关键点】JavaAPI示例

看手相不?【人体分析-手部关键点】JavaAPI示例

作者头像
小帅丶
发布2021-12-28 13:04:39
9850
发布2021-12-28 13:04:39
举报
文章被收录于专栏:XAIXAI

手相其源有西洋、印度和中国三支,中国民间的手相学源远而流长,终成博杂大观。掌纹也会随着时间发生变化。看手相分男左女右,拿男生举例子,35岁之前看左手,35之后看右手(女生相反)。

接口说明可以参考 https://ai.baidu.com/docs#/Body-API/2757b503

基于现有sdk版本进行 实现此接口调用 调用前请自行确认是否已经找梅姐申请了接口权限哦

使用Maven搭建一个工程

pom引入百度Java sdk

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/com.baidu.aip/java-sdk -->
<dependency>
    <groupId>com.baidu.aip</groupId>
    <artifactId>java-sdk</artifactId>
    <version>4.11.3</version>
</dependency>

创建一个类来实现手部关键点接口调用

其实就是继承sdk的AipBodyAnalysis

代码语言:javascript
复制
import com.baidu.aip.bodyanalysis.AipBodyAnalysis;
import com.baidu.aip.error.AipError;
import com.baidu.aip.http.AipRequest;
import com.baidu.aip.util.Base64Util;
import com.baidu.aip.util.Util;
import org.json.JSONObject;

import java.io.IOException;
import java.util.HashMap;

public class AipBodyAnalysisInvitation extends AipBodyAnalysis{
    //手部关键点识别
    static final String HAND_ANALYSIS = "https://aip.baidubce.com/rest/2.0/image-classify/v1/hand_analysis";

    public AipBodyAnalysisInvitation(String appId, String apiKey, String secretKey) {
        super(appId, apiKey, secretKey);
    }

    /**
     * 手部关键点识别方法
     * @param image 手部图片本地路径
     * @param options 其他参数
     * @return
     */
    public JSONObject handAnalysis(String image, HashMap<String, String> options) {
        AipRequest request = new AipRequest();
        preOperation(request);
        try {
            byte[] data = Util.readFileByBytes(image);
            String base64Content = Base64Util.encode(data);
            request.addBody("image", base64Content);
            if (options != null) {
                request.addBody(options);
            }
            request.setUri(HAND_ANALYSIS);
            postOperation(request);
            return requestServer(request);
        } catch (IOException e) {
            e.printStackTrace();
            return AipError.IMAGE_READ_ERROR.toJsonResult();
        }
    }
  
}

准备一个手掌图片

小帅离而立还有很久。基于百科所说明,那就使用左手图片

小插曲。如果颜色有问题。会导致识别为空。这个要找梅姐反馈一下。

我这用社区兑换的单反相机 对着自己的左手拍了好几张才有一张符合要求识别出来。

开始用接口去获取手部关键点

Java代码

代码语言:javascript
复制
import org.json.JSONObject;

import java.util.HashMap;

public class TestBody {
    public static void main(String[] args) throws Exception{
        //自己应用的appid apikey secretkey
        AipBodyAnalysisInvitation body = new AipBodyAnalysisInvitation("","","");
        //本地图片路径
        String path = "/Users/xiaoshuai/Downloads/DSC00286.JPG";
        HashMap<String,String> options = new HashMap<String,String>();
        JSONObject object = body.handAnalysis(path,options);
        //输出接口识别内容
        System.out.println("object = " + object);
    }
}

返回的json数据

21个骨节点坐标信息 过多 就不格式化显示了

代码语言:javascript
复制
{"log_id":88272290779127183,"hand_info":[{"hand_parts":{"11":{"score":0.8971255421638489,"x":491,"y":536},"12":{"score":0.8390465974807739,"x":491,"y":440},"13":{"score":0.7221894264221191,"x":588,"y":845},"14":{"score":0.8876256346702576,"x":588,"y":710},"15":{"score":0.8863898515701294,"x":588,"y":594},"16":{"score":0.8520171642303467,"x":549,"y":498},"17":{"score":0.7608776092529297,"x":684,"y":923},"18":{"score":0.8419321775436401,"x":665,"y":826},"19":{"score":0.8592996597290039,"x":665,"y":749},"0":{"score":0.7820904850959778,"x":472,"y":1444},"1":{"score":0.6027116775512695,"x":317,"y":1251},"2":{"score":0.6802216172218323,"x":240,"y":1096},"3":{"score":0.8013773560523987,"x":259,"y":942},"4":{"score":0.8201335668563843,"x":298,"y":807},"5":{"score":0.7507212162017822,"x":395,"y":845},"6":{"score":0.8637937307357788,"x":395,"y":691},"7":{"score":0.8144635558128357,"x":414,"y":594},"8":{"score":0.8497185111045837,"x":414,"y":498},"9":{"score":0.7746249437332153,"x":491,"y":826},"20":{"score":0.9296111464500427,"x":665,"y":652},"10":{"score":0.8292614221572876,"x":491,"y":671}},"location":{"score":0.9971377849578857,"top":408,"left":182,"width":584,"height":1029}}],"hand_num":1}

21个骨节点手相学的图示和标注图示

接下来咱们就拿着坐标去看个手相

返回的数据如下。从心理自我认为看出。还是很符合小帅的性格的哈。

代码语言:javascript
复制
{
    "plam":{
        "title":"手相分析",
        "tag":"木形手",
        "intro":"手相有阴阳男女之分,大小之别,手形之论,金木水火土是手形的基本分法。手形代表着人的吉凶富贵。",
        "dec":[
            "你的手形为木形手,木形手属于感性,唯美主义,有创造能力的手形。 具此手型的人,智慧颇高,好学深思,冷静善于分析事理,有独立思想,忍耐力特强,受得起沉重打击,不会稍遇挫败便心灰意冷,善于组织,为人慷慨大方,对金钱绝不吝啬,但会留意琐事,这类手型者多为懮思伤脾,甚则肺肾受累。"
        ]
    },
    "score":{
        "title":"手相分数分析",
        "score":91,
        "level":"非常好"
    }
}

手相详细分析仅作于本帖。娱乐而已。不提供具体接口地址。请知悉

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用Maven搭建一个工程
  • 创建一个类来实现手部关键点接口调用
  • 准备一个手掌图片
  • 开始用接口去获取手部关键点
    • Java代码
      • 返回的json数据
      • 21个骨节点手相学的图示和标注图示
      • 接下来咱们就拿着坐标去看个手相
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档