最近公司在开发一个垃圾知识分类的小程序,需要用到的一个功能就是,让用户手机拍照即可识别出这个垃圾属于哪个分类,比如是干垃圾还是湿垃圾?
这个我们用到的识别图片的接口就是百度的图像识别,具体大家可以参考下他的官方文档,我们就直接上代码了,和大家 分享下开发中的一些过程。
https://ai.baidu.com/docs#/ImageClassify-API/top 这个是百度图像识别接口
需要注意的是,百度提供的sdk里是使用的图片路径然后解析成base64图片内容,再进行识别。
但是小程序里是有一个接口可以直接获取图片的base64内容,这样就不需要将图片上传到服务器,然后获取图片路径地址,获取到路径地址以后再解析base64内容。
直接用微信的接口获取图片的base64内容,然后直接识别,这样速度就可以快很多了。
具体大家看代码了。
第一步是自己去百度注册开发者账号,然后填写自己的appid apikey等信息,要注意的是,百度现在提供每天500次的免费识别,超过五百次每天以后才收费。
$client = new AipImageClassify($confset['APP_ID'], $confset['API_KEY'], $confset['SECRET_KEY']); // 如果有可选参数 $options = array(); $options["baike_num"] = 5;//返回百科信息的结果数,默认不返回 // 带参数调用通用物体识别 if($data['is_base64']==1){//图片已经是base64的 就不需要base64转码了 $needbase64=0; $image = $data['image']; }else{//HTTP 协议的图片地址 需要先获取 $needbase64=1; $image = file_get_contents($data['image']); } $client->advancedGeneral($image, $options,$needbase64) /** * 通用物体识别接口 * * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式 * @param array $options - 可选参数对象,key: value都为string类型 * @description options列表: * baike_num 返回百科信息的结果数,默认不返回 * @return array */ public function advancedGeneral($image, $options=array(),$needbase64=1){ $data = array(); if($needbase64==1){ $data['image'] = base64_encode($image); }else{ $data['image'] = $image;// 小程序可以直接获取base64 不需要转base64了 2019年7月18日17:06:23秋峰增加的 } $data = array_merge($data, $options); return $this->request($this->advancedGeneralUrl, $data); }
好了,大概的方法就是这些,具体大家就根据自己的场景灵活使用了。
秋峰,phper、java后端开发,javascript前端开发,全栈开发,目前自创业,做项目系统开发,做公众号以及小程序等的开发, 今天就给大家分享到这里,希望对大家有所帮助。欢迎交流 大家相互学习 共同提高 我的 微信号:qiufeng2999