看手相不?【人體分析-手部關鍵點】JavaAPI示例
阿新 • • 發佈:2019-07-16
手相其源有西洋、印度和中國三支,中國民間的手相學源遠而流長,終成博雜大觀。掌紋也會隨著時間發生變化。看手相分男左女右,拿男生舉例子,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":"非常好"
}
}
手相詳細分析僅作於本帖。娛樂而已。不提供具體介面地址。請