1. 程式人生 > >看手相不?【人體分析-手部關鍵點】JavaAPI示例

看手相不?【人體分析-手部關鍵點】JavaAPI示例

手相其源有西洋、印度和中國三支,中國民間的手相學源遠而流長,終成博雜大觀。掌紋也會隨著時間發生變化。看手相分男左女右,拿男生舉例子,35歲之前看左手,35之後看右手(女生相反)。

介面說明可以參考 https://ai.baidu.com/docs#/Body-API/2757b503

基於現有sdk版本進行 實現此介面呼叫 呼叫前請自行確認是否已經找梅姐申請了介面許可權哦

使用Maven搭建一個工程

pom引入百度Java sdk

<!-- 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

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程式碼

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個骨節點座標資訊 過多 就不格式化顯示了

{"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個骨節點手相學的圖示和標註圖示

接下來咱們就拿著座標去看個手相

返回的資料如下。從心理自我認為看出。還是很符合小帥的性格的哈。

{
    "plam":{
        "title":"手相分析",
        "tag":"木形手",
        "intro":"手相有陰陽男女之分,大小之別,手形之論,金木水火土是手形的基本分法。手形代表著人的吉凶富貴。",
        "dec":[
            "你的手形為木形手,木形手屬於感性,唯美主義,有創造能力的手形。 具此手型的人,智慧頗高,好學深思,冷靜善於分析事理,有獨立思想,忍耐力特強,受得起沉重打擊,不會稍遇挫敗便心灰意冷,善於組織,為人慷慨大方,對金錢絕不吝嗇,但會留意瑣事,這類手型者多為懮思傷脾,甚則肺腎受累。"
        ]
    },
    "score":{
        "title":"手相分數分析",
        "score":91,
        "level":"非常好"
    }
}

手相詳細分析僅作於本帖。娛樂而已。不提供具體介面地址。請