利用百度图像识别进行植物识别

  • 前端页面代码
  • index.js(需要用到的js代码)
  • 后端(Java)接收并上传给百度图像识别

最近在学校课比较少,看了下百度的图像识别,我的想法是在客服端浏览器上传植物图片,然后在服务器端进行接收并识别(按指定规则传给百度的图像识别,它会返回结果给你,具体可以参照百度云中人工智能的图像识别API文档,很详细的!),然后根据结果在页面显示同类植物的信息、商品、事务。由于项目还没开始写,所以这里只是对结果进行了回显。我这里只是对我的整个流程代码进行阐述,有什么问题或优化可以帮忙指教一下,谢谢!

前端页面代码

<!-- 我前端页面用到是H5,当然可以直接用最简单的html实现 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>图像识别</title>
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet"href="//g.alicdn.com/msui/sm/0.6.2/css/sm.min.css">
<link rel="stylesheet"href="//g.alicdn.com/msui/sm/0.6.2/css/sm-extend.min.css">
<link rel="stylesheet" href="../resources/css/shop/productmanage.css">
</head>
<body><header class="bar bar-nav"><h1 class="title">图像识别</h1></header><div class="content"><div class="list-block"><ul><li><div class="item-content"><div class="item-media"><i class="icon icon-form-email"></i></div><div class="item-inner"><div class="item-title label">植物图片</div><div class="item-input"><input type="file" id="small-img" name="file" ></div></div></div></li></ul></div><div class="content-block"><div class="row"><div class="col-100"><a href="#" class="button button-big button-fill" id="submit">查询</a></div></div></div></div><script type='text/javascript'src='//g.alicdn.com/sj/lib/zepto/zepto.min.js' charset='utf-8'></script><script type='text/javascript'src='//g.alicdn.com/msui/sm/0.6.2/js/sm.min.js' charset='utf-8'></script><script type='text/javascript'src='//g.alicdn.com/msui/sm/0.6.2/js/sm-extend.min.js' charset='utf-8'></script><script type='text/javascript'src='../resources/js/baidu/index.js' charset='utf-8'></script>
</body>
</html>

index.js(需要用到的js代码)

/*** 利用Ajax来上传图片*/
$(function(){//查询图片信息的URLvar productPostUrl = '/自己项目名/baidu/txsp';$('#submit').click(function(){//获取图片对象var thumbnail = $('#small-img')[0].files[0];//浏览器打印出来看看而已console.log(thumbnail);//利用FormData来上传文件var formData = new FormData();formData.append('thumbnail', thumbnail);$.ajax({url : productPostUrl,type:'POST',data : formData,//必须false才会自动加上正确的Content-TypecontentType : false,/*** 必须false才会避开jQuery对 formdata 的默认处理* XMLHttpRequest会对 formdata 进行正确的处理*/processData : false,dataType:"json",//设置上传的mime类型为  multipart/form-datamimeType:"multipart/form-data",cache : false,success : function(data){if(data.success){//回显植物名称$.toast(data.result);}else {$.toast('无法识别!');}}});});
});

后端(Java)接收并上传给百度图像识别

/*这里用到了AccessToken、Base64Util、FileInputStreamUtil、TXSPHttpUtil4个工具类AccessToken:是为了通过百度给的API Key和Secret Key获取权限(即Access Token)(不懂得可以去百度云的人工智能—图像识别 看一下它的API文档,很简单的)Base64Util:进行Base64编码FileInputStreamUtil:根据图片的输入流读取并返回byte[] 数组TXSPHttpUtil:通过该工具类将图片发送给百度进行识别,并返回结果(JSON格式)
*/@Controller
@RequestMapping("/baidu")
public class BaiDuTXSP {/*** 进行图像识别,返回植物信息* @param request* @return*/@RequestMapping(value="/txsp",method=RequestMethod.POST)@ResponseBody//写required=false 是为了当前端不传文件时不会报错。private Map<String,Object> listShopDetailPageInfo(HttpServletRequest request,@RequestParam( value="thumbnail",required=false)MultipartFile multipartFile){Map<String,Object> modelMap = new HashMap<String, Object>();//百度图像识别请求地址String requestUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/plant";try {//读取文件内容转为byte数组byte[] imageArr = FileInputStreamUtil.readFileByBytes(multipartFile.getInputStream());//通过Base64进行编码String imageStr = Base64Util.encode(imageArr);//参数:图片的字符串形式String imageParam = "image=" + URLEncoder.encode(imageStr, "UTF-8");//以字符串的形式发送给百度并返回结果String result = TXSPHttpUtil.post(requestUrl, AccessToken.getAccessToken(), imageParam);modelMap.put("result",new JSONObject(result).getJSONArray("result").getJSONObject(0).getString("name"));modelMap.put("success",true);} catch (Exception e) {System.out.println("图像识别失败!");modelMap.put("success",false);e.printStackTrace();}return modelMap;}}

Controller层用到的四个工具类我就不写在上面了,如果有需要可以通过百度网盘下载。
链接: 百度网盘4个工具类下载链接
提取码:b0bw

利用百度图像识别鉴定植物相关推荐

  1. python图像识别步骤_利用百度智能云结合Python体验图像识别(转载来自qylruirui)

    利用百度智能云结合Python体验图像识别 只要注册了百度账号就可以轻松体验百度智能云中图像识别功能的魅力! 1. 所需要的工具 一个百度账号(大家都有哈) 一个可以运行python代码的编译器(Py ...

  2. python 菜品识别_利用百度智能云结合Python体验图像识别(来自qylruirui)

    利用百度智能云结合Python体验图像识别 只要注册了百度账号就可以轻松体验百度智能云中图像识别功能的魅力! 1. 所需要的工具 一个百度账号(大家都有哈) 一个可以运行python代码的编译器(Py ...

  3. 利用百度云API接口上传照片进行植物识别

    第一步还是引库,确定自己安装过这些库了,没有安装的需要自行安装 import requests import base64 import os #os库是下面多张图片进行识别的,如果一次识别一张图片就 ...

  4. python利用百度AI进行图片识别与分类

    python利用百度AI进行图片识别与分类 声明 此博客纯属记录我学习的过程,是本人的一次大作业,如果程序中有问题或者有更好的实现方法希望各位前辈多多指点 背景 大多数人的相册都是乱七八糟的,动物的照 ...

  5. php验证码百度ocr识别,利用百度OCR实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费ocr正好可以 ...

  6. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  7. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...

    摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?" 答案就是,利用百度地图上的数据. ---------------------------- ...

  8. python代码示例百度云-python利用百度云接口实现车牌识别的示例

    一个小需求---实现车牌识别. 目前有两个想法 1. 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 2. 自己实现车牌识别算法(复杂) 一开 ...

  9. “衣+”挑战百度 图像识别搜索引擎

     "衣+"挑战百度 图像识别搜索引擎       2014年9月29日 13:24  手机之家     在大街小巷人们无不热衷于对时尚服饰的追逐,但在看到自己喜欢的服饰时又束手 ...

  10. android开发百度地图坐标偏差,利用百度地图Android sdk高仿微信发送位置功能及遇到的问题...

    接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶 我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出 1.在微信发送 ...

最新文章

  1. python【Matlibplot绘图库】利用matlibplot绘制雷达图
  2. 一个大数据排序问题的巧妙解法
  3. P1080 国王游戏(贪心+高精度乘除及大数比较)
  4. 今日心得:给自己写信
  5. Myeclipes连接Mysql数据库配置
  6. excel表中怎么让隐藏的表格中不粘贴内容-制作autohotkey快捷键
  7. java 蓝桥杯算法训练 每月的天数(题解)
  8. CMMI与Agile敏捷开发比较之二:需求管理篇(兼谈用敏捷实现和满足CMMI的ReqM过程域)...
  9. c语言考试中操作题文件,计算机二级考试C语言操作题题库(21页)-原创力文档...
  10. 3dsmax VRay分布式渲染
  11. Storage System
  12. 容易的面试问题变得更加困难:给定数字1..100,在正好缺少k的情况下,找到缺失的数字
  13. java 正数转负数函数_Java数学函数将正整数转换为负数并将负整数转换为正数?...
  14. Shiro限制登录尝试次数(适用于单节点)
  15. uniapp小程序腾讯云视频调用实现1V1会话和踩坑分享
  16. ios删除字符串第一位_iOS “字符串” 的几种常见的截取方法(随时更新)
  17. NOTIFIER诺帝菲尔消防主机电源维修及日常维护
  18. format格式化输出
  19. 编程基础之二十一:导师巴贝奇与Ada(四)
  20. 编写一程序计算到现在为止已经过了多少天,现在的时间是几时几分几秒

热门文章

  1. JAVA 进制转换工具
  2. IP子网划分概念:IP地址,子网和网关配置——Vecloud
  3. 【QT5】解决 QT 界面中文显示乱码问题
  4. SpringBoot+Vue实现前后端分离高校学生考勤系统
  5. 西门子定位器6DR5020-0NG00-0AA0
  6. FME 坐标系使用(二)----关于Beijing54坐标系和Xian80坐标系说明的补充
  7. FlashFXP注册码、密钥
  8. Grafana 简单设置
  9. 【架构】分布式架构介绍及实现(简略)
  10. filetransferdmg魅族下载_filetransfer.dmg下载