百度图像识别 API
首先预览下效果
feaa250077a543a39f037ae8e78a3e80~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp (640×594) (byteimg.com)
从以上预览图中可看出,每张图片识别出5条数据,每条数据根据识别度从高往下排,每条数据包含物品名称、识别度、所属类目
准备工作
1、注册百度账号
2、登录百度智能云控制台
3、在产品列表中找到 人工智能->图像识别
4、点击创建应用,如下图:
已创建好的应用列表
代码部分
1、获取access_token值
注意:使用图像识别需用到access_token值,因此需先获取到,以便下面代码的使用
access_token获取的方法有多种,这里使用PHP获取,更多有关access_token获取的方法以及说明可查看官方文档:
ai.baidu.com/docs#/Auth/…
创建一个get_token.php文件,用来获取access_token值
PHP获取access_token代码示例:
php
复制代码
<?php //请求获取access_token值函数 function request_post($url = '', $param = '') { if (empty($url) || empty($param)) { return false; } $postUrl = $url; $curlPost = $param; $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页 curl_setopt($curl, CURLOPT_HEADER, 0);//设置header curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($curl, CURLOPT_POST, 1);//post提交方式 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $data = curl_exec($curl);//运行curl curl_close($curl); return $data; } $url = 'https://aip.baidubce.com/oauth/2.0/token'; //固定地址 $post_data['grant_type'] = 'client_credentials'; //固定参数 $post_data['client_id'] = '你的 Api Key'; //创建应用的API Key; $post_data['client_secret'] = '你的 Secret Key'; //创建应用的Secret Key; $o = ""; foreach ( $post_data as $k => $v ) { $o.= "$k=" . urlencode( $v ). "&" ; } $post_data = substr($o,0,-1); $res = request_post($url, $post_data);//调用获取access_token值函数 var_dump($res); ?>
返回的数据如下,红框内的就是我们所要的access_token值
2、图片上传及识别
2.1、在项目的根目录下创建一个upload文件夹,用于存放上传的图片
2.2、创建一个index.html文件,用于上传图片及数据渲染
代码如下:
js
复制代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>使用百度 API 实现图像识别</title> <style type="text/css"> .spanstyle{ display:inline-block; width:500px; height:500px; position: relative; } </style> <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> <script> function imageUpload(imgFile) { var uploadfile= imgFile.files[0] //获取图片文件流 var formData = new FormData(); //创建一个FormData对象 formData.append('file',uploadfile); //将图片放入FormData对象对象中(由于图片属于文件格式,不能直接将文件流直接通过ajax传递到后台,需要放入FormData对象中。在传递) $("#loading").css("opacity",1); $.ajax({ type: "POST", //POST请求 url: "upload.php", //接收图片的地址(同目录下的php文件) data:formData, //传递的数据 dataType:"json", //声明成功使用json数据类型回调 //如果传递的是FormData数据类型,那么下来的三个参数是必须的,否则会报错 cache:false, //默认是true,但是一般不做缓存 processData:false, //用于对data参数进行序列化处理,这里必须false;如果是true,就会将FormData转换为String类型 contentType:false, //一些文件上传http协议的关系,自行百度,如果上传的有文件,那么只能设置为false success: function(msg){ //请求成功后的回调函数 console.log(msg.result) //预览上传的图片 var filereader = new FileReader(); filereader.onload = function (event) { var srcpath = event.target.result; $("#loading").css("opacity",0); $("#PreviewImg").attr("src",srcpath); }; filereader.readAsDataURL(uploadfile); //将后台返回的数据进行进一步处理 var data= '<li style="margin:2% 0"><span>物品名称:'+msg.result[0].keyword+';</span> <span style="padding: 0 2%">识别度:'+msg.result[0].score*100+'%'+';</span><span>所属类目:'+msg.result[0].root+';</span></li>' data=data+ '<li style="margin:2% 0"><span>物品名称:'+msg.result[1].keyword+';</span> <span style="padding: 0 2%">识别度:'+msg.result[1].score*100+'%'+';</span><span>所属类目:'+msg.result[1].root+';</span></li>' data=data+ '<li style="margin:2% 0"><span>物品名称:'+msg.result[2].keyword+';</span> <span style="padding: 0 2%">识别度:'+msg.result[2].score*100+'%'+';</span><span>所属类目:'+msg.result[2].root+';</span></li>' data=data+ '<li style="margin:2% 0"><span>物品名称:'+msg.result[3].keyword+';</span> <span style="padding: 0 2%">识别度:'+msg.result[3].score*100+'%'+';</span><span>所属类目:'+msg.result[3].root+';</span></li>' data=data+ '<li style="margin:2% 0"><span>物品名称:'+msg.result[4].keyword+';</span> <span style="padding: 0 2%">识别度:'+msg.result[4].score*100+'%'+';</span><span>所属类目:'+msg.result[4].root+';</span></li>' //将识别的数据在页面渲染出来 $("#content").html(data); } }); } </script> </head> <body> <fieldset> <input type="file" onchange="imageUpload(this)" > <legend>图片上传</legend> </fieldset> <div style="margin-top:2%"> <span class="spanstyle"> <img id="PreviewImg" src="default.jpg" style="width:100%;max-height:100%" > <img id="loading" style="width:100px;height:100px;top: 36%;left: 39%;position: absolute;opacity: 0;" src="loading.gif" > </span> <span class="spanstyle" style="vertical-align: top;border: 1px dashed #ccc;background-color: #4ea8ef;color: white;"> <h4 style="padding-left:2%">识别结果:</h4> <ol style="padding-right: 20px;" id="content"> </ol> </span> </div> </body> </html>
2.3、创建一个upload.php文件,用于接收图片及调用图像识别API
备注:百度图像识别API接口有多种,这里使用的是【通用物体和场景识别高级版】 ;该接口支持识别10万个常见物体及场景,接口返回大类及细分类的名称结果,且支持获取图片识别结果对应的百科信息
该接口调用的方法也有多种,这里使用PHP来调用接口,更多有关通用物体和场景识别高级版调用的方法以及说明可查看官方文档:
ai.baidu.com/docs#/Image…
PHP请求代码示例:
php
复制代码
<?php //图像识别请求函数 function request_post($url = '', $param = ''){ if (empty($url) || empty($param)) { return false; } $postUrl = $url; $curlPost = $param; // 初始化curl $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $postUrl); curl_setopt($curl, CURLOPT_HEADER, 0); // 要求结果为字符串且输出到屏幕上 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // post提交方式 curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); // 运行curl $data = curl_exec($curl); curl_close($curl); return $data; } $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); // 获取图片文件后缀名 $_FILES["file"]["name"]=time().'.'.$extension;//图片重命名(以时间戳来命名) //将图片文件存在项目根目录下的upload文件夹下 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); $token = '调用鉴权接口获取的token';//将获取的access_token值放进去 $url = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general?access_token=' . $token; $img = file_get_contents("upload/" . $_FILES["file"]["name"]);//本地文件路径(存入后的图片文件路径) $img = base64_encode($img);//文件进行base64编码加密 //请求所需要的参数 $bodys = array( 'image' => $img,//Base64编码字符串 'baike_num'=>5 //返回百科信息的结果数 5条 ); $res = request_post($url, $bodys);//调用请求函数 echo $res; //将识别的数据输出到前端 ?>
结语补充
在实际开发过程中,获取access_token值并不是单独写成一个页面文件,而是写在项目系统的配置中;由于access_token值有效期为30天,可通过判断是否失效,来重新请求access_token值
百度图像识别 API相关推荐
- 基于百度图像识别api的游戏(coc)辅助工具分析
基于百度图像识别api的游戏(coc)辅助工具分析 (本代码仅供参考学习使用) 去年国庆放假,没事干,刚学了python 于是就找了这个小项目来练练手 总体来说 难度不大 内容也不多 几百行搞定 (删 ...
- 利用Python, PyQt5,Selenium,百度图像识别API制作文献阅读辅助工具
开发背景 作为一名科研狗,经常需要读一些外文文献并且做笔记,有时还需要全文翻译以备后用.这时候会遇到一些问题: PDF和CAJ文件直接复制出来的东西含有大量无用的换行符,手动删除十分麻烦: 有的文献是 ...
- 百度图像识别API调用(python)
申请百度API的账户 创建应用 代码编写 图像识别 Python SDK目录结构 ├── README.md ├── aip //SDK目录 │ ├── __init__.py //导出类 │ ├── ...
- 百度人工智能API的调用_微信小程序。
微信小程序–智能接口 通过微信小程序开发调用百度人工智能接口,从而实现很多有趣的功能. 文章目录 微信小程序--智能接口 前言 一.百度智能云的认识 1-1 注册 1-2 页面说明 1-3 功能初识 ...
- uni-app实战教程-----H5移动app以及小程序(四)---前后端编写,交互,百度图像识别接入
创建项目已经完成了 qq交流群 974178910 最终效果体验 http://dadandmother.cn/stt/ 这节课我们来讲下 页面跳转以及底部选项 开发工具: Hbuilder X 完整 ...
- php 开发百度聚合,php利用百度javascript API实现导航
/** * 导航去门店 */ public function dpdh(){ // $userid = $this->init(); if ($_GET['id']) { $where['id' ...
- 【百度地图API】——如何用label制作简易的房产标签
摘要: 最近,API爱好者们纷纷说,自定义marker太复杂了!不仅定义复杂,连所有的dom事件都要自己重新定义.有没有快速简易创建房产标签的方法呢? 答案当然是有的啦~ 我们可以利用label嘛! ...
- 【百度地图API】如何制作班级地理通讯录?LBS通讯录
原文:[百度地图API]如何制作班级地理通讯录?LBS通讯录 摘要:班级通讯录必备的功能,比如人员列表,人员地理位置标注,展示复杂信息窗口,公交和驾车等.一般班级人员都不会超过300个,因为可以高效地 ...
- baidumap api MySQL_百度地图API开发笔记一(基础篇)
什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供了诸 ...
最新文章
- 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题
- ectouch第六讲 之表常用链接
- EL表达式JSON应用
- 发送邮件 (Send Email)
- centos7的网络配置
- Linux入门之一Linux 系统启动
- 动画特效九:下拉刷新
- Java语言的发展史
- 百度AI图像处理—图像主体识别调用教程(基于Python3-附Demo)
- 医院信息系统(HIS系统)如何接入短信/语音功能
- oracle11g打补丁故障_针对Oracle11g补丁修补说明.docx
- 如何使用决策树判断要不要去相亲?
- java ppt 转pdf_Java 将PPT转为PNG/PDF/SVG/PPTX
- 询问HTG:Android版本,同时的耳机和扬声器声音以及iPad文件加载
- 积极的心态带动积极的行为
- HTML制作点播图,基于HTML5的视频点播系统设计与实现_问答库
- 【项目实战】基于Python的校园二手交易网站Django二手商城系统
- C语言经典题10道之古典问题: 兔子生兔问题
- 39.SSH远程终端连接工具
- LPL2019职业联赛春季+夏季赛数据分析