最近给客户做了一个中医文化平台,其中有一个药材识别模块,要求上传一张图然后识别并显示结果。于是就参考了百度的人工智AI
文档内容比较全面也比较详细,里面有很多的调用接口以及各种语言调用的示例。
在调用之前先要注册一个账号百度智能云-登录
在调用的时候需要API Key和Secret Key。
我要要中药识别,所以要调用植物识别的接口,文档中也提供了代码只需稍加修改即可
以下是我系统的部份代码
@RestController
@RequestMapping("/ai")
public class RecognitionController {
@Autowired
public Config orc;
/**
* 文件上传解析
*
* @param
* @return
* @methodsDescription:
* @methodName: rec
* @author: singleton-zw
* @return: R
*/
@PostMapping("/recognLocal")
public AjaxResult rec(@RequestParam("url") String url){
if (url.isEmpty()) {
return AjaxResult.error("404","文件不能为空");
}
String path =url;
String relst = "";
try {
byte[] imgData = FileUtil.readFileByBytes(orc.getUpladfile()+path.replaceFirst("/profile/",""));
String imgStr = Base64Util.encode(imgData);
relst = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");
/**
* 线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
*/
String accessToken = getAuth(orc.getClassifyClientId(),orc.getClassifyClientSecret());
String result = HttpUtil.post(ConfigURL.plantUrl, accessToken, relst);
Result fromJson = GsonUtils.fromJson(result, Result.class);
return AjaxResult.success(fromJson);
} catch (Exception e) {
e.printStackTrace();
}
return AjaxResult.error();
}
前端用的是VUE
上传图片然后识别,结果如下
再试一下上传一张水果的
传一张非植物的
准确率很高,如果要识别其他种类,直接调用就可以了。
这果说明一下,系统返回的是json字符串,页面的结果可以自己再加工。
{"result":[{"score":0.7190837,"name":"草莓"},{"score":0.41170713,"name":"草莓花"},{"score":0.003689737,"name":"东方草莓"}],"log_id":1780416402093194534}
有兴趣的朋友可以加好友一起讨论一下V:p_k1816