這篇文章介紹如何用Python快速實現一個植物識別的app,家里養了幾盆多肉還叫不上名字,正好拿來識別一下。實現這樣一個app只需要20行左右的代碼,先來看下效果:
另外,我也開發了微信小程序版本,大家可以體驗一下。
實現該app主要包含兩步,前端界面開發和后端植物識別服務,下面來分別介紹一下。
前端的實現方式有很多種,剛剛說的小程序是一種,但對於習慣用Python的開發者來說,我們還是希望能通過Python語言來開發界面。果然真有這樣的工具,叫streamlit
,它是專門為數據科學家、機器學習工程師而開發的,使用它的時候不需要關心布局、樣式、服務部署等web相關的知識,而就像開發普通Python程序一樣,快速構建優美的app。streamlit
的安裝也很簡單,執行pip install streamlit
命令即可。想入門streamlit
的朋友可以看次條的文章。
接下來,我們把前端界面開發出來,從上面動圖可以看到,最核心邏輯為接收用戶輸入的圖片,並將其顯示出來。
import streamlit as st
# 設置網站標題 st.title('植物識別') # 圖片選擇框 uploaded_file = st.file_uploader('選擇一張圖片', type=['jpg', 'png']) if uploaded_file is not None: # 顯示已選的文件 st.image(uploaded_file, caption='已選文件', use_column_width=True)
界面完成后,我們再來考慮植物圖片的識別服務,這里我用的是百度AI的服務

執行pip install baidu-aip
命令即可安裝百度AI的Python SDK。然后,再去百度AI開放平台注冊一個賬號獲得相應的APP_KEY和SCRET_KEY。編寫代碼調用植物識別服務
from aip import AipImageClassify
APP_ID = 'xxx' # 換成自己的 APP_ID API_KEY = 'xxx' # 換成自己的 API_KEY SECRET_KEY = 'xxx' # 換成自己的 SECRET_KEY client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY) """ 植物識別結果 """ res = client.plantDetect(image) # 調用百度api識別植物
最后將返回的結果在app上展示即可,完整代碼如下
import streamlit as st
from aip import AipImageClassify APP_ID = 'xxx' API_KEY = 'xxx' SECRET_KEY = 'xxx' client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY) # 設置網站標題 st.title('植物識別') # 圖片選擇框 uploaded_file = st.file_uploader('選擇一張圖片', type=['jpg', 'png']) if uploaded_file is not None: # 顯示已選的文件 st.image(uploaded_file, caption='已選文件', use_column_width=True) bs = uploaded_file.read() """ 植物識別結果 """ res = client.plantDetect(bs) # 調用百度api識別植物 res['result'] # 顯示輸出結果 """ 該植物最有可能是 """, res['result'][0]['name'] # 取預測概率最大的結果
執行streamlit run plant_detect.py
命令啟動app,看到有如下輸出
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501 Network URL: http://192.168.1.3:8501
在瀏覽器訪問指定的地址即可。
希望這篇文章的內容能對你有用,接下來我會定期分享這種AI小應用希望大家能夠喜歡。另外,完整代碼(包括微信小程序)已經開放,公眾號后台回復關鍵字 植物識別 即可獲取完整資料。
歡迎公眾號「渡碼」,輸出別地兒看不到的干貨。
