Python實(shí)現(xiàn)識(shí)別花卉種類的示例代碼
大家好,我是小五
“無窮小亮的科普日常”經(jīng)常會(huì)發(fā)布一些鑒定網(wǎng)絡(luò)熱門生物視頻,既科普了生物知識(shí),又滿足觀眾們的獵奇心理。今天我們也來鑒定一下網(wǎng)絡(luò)熱門植物!最近春天很多花都開了,我正好趁著清明假期到戶外踏青并拍攝了不少花卉的照片。
由于對(duì)很多花不是特別熟悉,所以我們需要借助軟件來識(shí)別究竟是什么花的種類。市面上的識(shí)花軟件有很多,比如花伴侶、形色、百度等等,我測(cè)試后發(fā)現(xiàn)百度的識(shí)別效果最為優(yōu)秀。于是我就有了一個(gè)想法,能不能批量調(diào)用百度的接口,對(duì)花卉照片進(jìn)行識(shí)別并分類呢?
百度圖像識(shí)別
百度的圖像識(shí)別接口,可以精準(zhǔn)識(shí)別超過十萬種物體和場景,包含10余項(xiàng)高精度的識(shí)圖能力并提供相應(yīng)的API服務(wù)。
https://cloud.baidu.com/product/imagerecognition
我們按照步驟創(chuàng)建新應(yīng)用,并得到專屬自己的API Key和Secret Key,具體如下圖所示。
圖像識(shí)別提供一個(gè)組合API接口,支持多種垂類識(shí)別服務(wù)的靈活組合調(diào)用,這里只需要調(diào)用植物識(shí)別就可以滿足需求。
如何Python調(diào)用百度圖像識(shí)別API接口?
第一步,調(diào)用鑒權(quán)接口獲取token。
API_Key?=?'**********' Secret_Key?=?'**********' def?get_access_token(API_Key,Secret_Key):? ????host?=?'**********' ????response?=?requests.get(host) ????return?response.json()['access_token'] access_token?=?get_access_token(API_Key,Secret_Key)
第二步,識(shí)別圖像種類
在交互式環(huán)境中輸入如下命令:
import?requests import?base64 request_url?=?'**********' #?二進(jìn)制方式打開圖片文件 f?=?open(r'D:\下載\QQ截圖20220407203203.png',?'rb') img?=?base64.b64encode(f.read()) params?=?{"image":img} request_url?=?request_url?+?"?access_token="?+?access_token headers?=?{'content-type':?'application/x-www-form-urlencoded'} response?=?requests.post(request_url,?data=params,?headers=headers) if?response: ????print?(response.json()['result'][0]['name'])
輸出:
櫻花
調(diào)用百度圖像識(shí)別接口的返回參數(shù)如下圖所示,對(duì)我們來說,只需要其中的name(植物名稱)參數(shù)。
讀取照片文件
我將拍攝的照片存放在D:\下載\花卉合集
路徑下,所以需要使用os
模塊進(jìn)行讀取文件列表,方便進(jìn)行后續(xù)的批量操作。
在交互式環(huán)境中輸入如下命令:
import?os path?=?"D:\下載\花卉合集" filenames?=?os.listdir(path) filenames
輸出:
['QQ截圖20220405223301.png',
'QQ截圖20220405223320.png',
......
'微信圖片_20220405225020.jpg',
'微信圖片_20220405225023.jpg']
os模塊中的listdir()
?法,接收?個(gè)路徑參數(shù)path,返回的是該路徑下所有?件的?件名組成的列表。這樣,我們就獲取了該路徑下所有的花卉圖片文件名,如下圖所示。
整理分類照片
接著,我們便可以使用for循環(huán)語句,依次對(duì)花卉照片進(jìn)行圖像識(shí)別,并按照識(shí)別出的名稱進(jìn)行分類整理到對(duì)應(yīng)的文件夾中。
在交互式環(huán)境中輸入如下命令:
for?i?in?filenames: ????flower_name?=?get_fname(i) ????file_path?=?os.path.join(path,i) ????folder_path?=?os.path.join(path,flower_name) ????if?not?os.path.exists(folder_path):? ????????os.mkdir(folder_path) ????shutil.move(file_path,folder_path)
其中get_fname()
函數(shù),是我們將前文中百度圖像識(shí)別代碼封裝為一個(gè)自定義函數(shù),此處調(diào)用即可返回得到照片對(duì)應(yīng)的花卉名稱flower_name
。
后續(xù)的代碼與之前分享過的自動(dòng)分類整理文件幾乎一致,即if判斷是否已經(jīng)存在對(duì)應(yīng)花卉名稱的文件夾,若不存在則創(chuàng)建。最后,調(diào)用shutil
模塊移動(dòng)花卉照片至對(duì)應(yīng)文件夾。
具體執(zhí)行效果,如下方動(dòng)圖所示。
以上就是Python實(shí)現(xiàn)識(shí)別花卉種類的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python識(shí)別花卉種類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
TensorFlow中tf.batch_matmul()的用法
這篇文章主要介紹了TensorFlow中tf.batch_matmul()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Python 使用tempfile包輕松無痕的運(yùn)行代碼
大家好,我們知道軟件運(yùn)行過程中一般會(huì)在指定位置生成臨時(shí)文件,這些資源不要輕易刪除,可能是過程文件,定時(shí)清理是必要的,今天給大家分享一款工具:tempfile,喜歡本文點(diǎn)贊支持,歡迎收藏學(xué)習(xí)2021-11-11python使用celery實(shí)現(xiàn)訂單超時(shí)取消
這篇文章主要為大家詳細(xì)介紹了python使用celery實(shí)現(xiàn)訂單超時(shí)取消,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03妙用itchat! python實(shí)現(xiàn)久坐提醒功能
python編寫的久坐提醒,給最愛的那個(gè)她,這篇文章主要為大家分享了python久坐提醒功能的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11詳解在python中如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮
Python有一些內(nèi)置庫用于處理數(shù)據(jù)壓縮和解壓縮,其中一個(gè)就是zlib模塊,這個(gè)模塊為DEFLATE壓縮算法和相關(guān)的gzip(文件格式)提供了支持,在這篇文章中,我們將深入探討如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮2023-06-06