最近公司在開發一個垃圾知識分類的小程序,需要用到的一個功能就是,讓用戶手機拍照即可識別出這個垃圾屬於哪個分類,比如是干垃圾還是濕垃圾?
這個我們用到的識別圖片的接口就是百度的圖像識別,具體大家可以參考下他的官方文檔,我們就直接上代碼了,和大家 分享下開發中的一些過程。
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