调用百度智能云ai的植物识别,如何获取所有的返回参数(包括百科描述那些)。我按找官网的demo来跑只能获取如下的结果:{"log_id": 6254760983414220744, "result": [{"score": 0.8125735521316528, "name": "金边吊兰"}, {"score": 0.600487470626831, "name": "吊兰"}, {"score": 0.12811417877674103, "name": "金心吊兰"}]}”
百度智能云AI植物识别接口返回的结果中,只包含了基本的植物名称和识别得分,如果需要获取植物的详细描述信息,需要使用百度百科API进行查询。具体步骤如下:
首先在百度开放平台上创建一个百度百科API的应用,并获取到 App Key 和 Secret Key。
在调用植物识别接口时,将参数 "baike_num" 设置为 1,这将返回植物识别结果中每种植物的百科词条ID。
使用获取到的百科词条ID,调用百度百科API进行查询,可以获取到包括描述、图片、标签等详细信息的JSON格式数据。
下面是一个Java代码示例,演示如何通过百度百科API获取植物识别结果的详细信息:
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.HmacAlgorithms;
import org.apache.commons.codec.digest.HmacUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class PlantRecognition {
private static final String API_KEY = "Your App Key";
private static final String SECRET_KEY = "Your Secret Key";
private static final String PLANT_URL = "https://aip.baidubce.com/rest/2.0/image-classify/v1/plant";
private static final String BAIDU_BAIKE_URL = "https://baike.baidu.com/api/openapi/BaikeLemmaCardApi";
private static final String BAIDU_BAIKE_APP_ID = "Your App ID";
public static void main(String[] args) throws Exception {
String imagePath = "Your Image Path";
String accessToken = getAccessToken(API_KEY, SECRET_KEY);
String result = plantRecognition(imagePath, accessToken);
System.out.println(result);
JSONArray jsonArray = JSON.parseObject(result).getJSONArray("result");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String name = jsonObject.getString("name");
String baikeId = jsonObject.getString("baike_info");
if (baikeId != null && !baikeId.isEmpty()) {
JSONObject baikeInfo = JSON.parseObject(baikeId);
String lemmaId = baikeInfo.getString("lemma_id");
String baikeResult = getBaikeResult(lemmaId);
System.out.println(baikeResult);
}
}
}
private static String plantRecognition(String imagePath, String accessToken) throws Exception {
byte[] imgData = ImageUtil.readFileByBytes(imagePath);
String imgStr = Base64.encodeBase64String(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
Map<String, String> paramMap = new HashMap<>();
paramMap.put("image", imgParam);
paramMap.put("baike_num", "1");
String paramStr = HttpUtil.buildParamString(paramMap, "UTF-8");
String url = PLANT_URL + "?" + paramStr;
String result = HttpUtil.get(url, accessToken);
return