使用 Calorie Mama API 的食物識別 Selenium
一個用於自動化網頁瀏覽器的開源程式稱為 Selenium Webdriver。它為跨多個平臺和瀏覽器的 Web 應用程式提供了一個平臺無關的測試框架。透過使用深度學習和計算機視覺演算法,食物識別 API Caloriemama 可以從單張照片中識別不同的食物及其營養價值。
在本指南中,我們將瞭解 Selenium Webdriver 如何自動化上傳照片和檢索結果的過程,使開發人員能夠輕鬆地將食物識別功能整合到他們的應用程式中,併為消費者提供準確的營養資訊。
設定
Firefox 可執行檔案
從此處下載 Firefox 瀏覽器安裝程式
下載完成後,安裝瀏覽器,一個 exe 檔案將自動放置在C:\Program Files\Mozilla Firefox\firefox.exe。稍後我們將需要它。
Gecko 驅動程式
Windows 使用者可以從這裡下載 gecko 驅動程式。對於其他版本,請參閱發行說明。
解壓縮 zip 檔案並將“geckodriver.exe”檔案放在 C:\ 目錄中。稍後我們將在程式碼中引用它。
Selenium Python 包
我們將使用最新版本的 Selenium Webdriver,因此使用 pip 安裝以下內容:
pip3 install -U selenium pip3 install -U webdriver-manager
圖片
對於我們的用例,我們將使用此圖片作為“pasta.jpg”。將此圖片儲存到您的 C:\ 驅動器中。當然,您可以用您選擇的任何其他食物專案替換此食物專案。
演算法
使用 Selenium WebDriver 設定 Firefox 瀏覽器的選項。
使用 Selenium WebDriver 啟動 Firefox 瀏覽器並開啟 Caloriemama API 網站。
使用 Selenium WebDriver 在網站上找到檔案上傳按鈕元素。
使用 Selenium WebDriver 自動上傳影像檔案。
找到識別的菜餚結果元素,並使用 Selenium WebDriver 在控制檯中列印它。
示例
將此程式碼塊貼上到 Python 檔案中,並將.py檔案也儲存在 C:\ 驅動器中,您在其中儲存了影像。
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.firefox.options import Options options = Options() # download and install firefox and it will be in the following path options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe' # download geckodriver.exe and put it in the same folder as this script driver = webdriver.Firefox(executable_path=r'C:\geckodriver.exe', options=options) # launch driver using the selenium webdriver and open the website driver.get('https://www.caloriemama.ai/api') # find the upload button element upload = driver.find_element(By.CLASS_NAME, 'file-upload') # auto upload the file upload.send_keys(r"C:\pasta.jpg") time.sleep(5) # find the result element result = driver.find_element(By.CLASS_NAME, 'group-name') # print it in the console print(f"Your dish is: {result.text}")
輸出
1. 瀏覽器將自動啟動
2. 影像將自動上傳並提交以進行識別
3. 結果將在終端輸出
Your Dish is: Pasta
此程式碼使用 Selenium WebDriver 庫自動執行 Caloriemama API,Caloriemama API 是一種食物識別 API,可以識別各種食物並提供其相應的營養資訊。
程式碼首先匯入 time、selenium 和 selenium.webdriver,這些是必需的庫
然後匯入來自selenium.webdriver.common.by的 By 類,它用於在網頁上定位元素
然後將 Options 類(用於設定 Firefox 瀏覽器選項)建立為一個新例項。
將 Firefox 二進位制檔案儲存在系統中的路徑設定為二進位制位置選項。透過引用它來建立 webdriver 例項
使用Firefox() 方法建立一個新的 Firefox 驅動程式例項。它接受兩個引數:geckodriver 的可執行檔案位置和選項
然後程式碼使用驅動程式物件的get() 函式訪問 Caloriemama API 網站。
然後程式碼使用驅動程式物件的find_element() 函式在網頁上找到“Upload”按鈕。
根據By.CLASS NAME引數,應使用其類名查詢該元素。“file-upload”是上傳按鈕元素的類名
在找到上傳按鈕後,程式碼在上傳物件上呼叫send_keys() 函式以上傳食物專案的圖片。
圖片檔案的路徑作為引數提供給send_keys()。
然後程式碼使用time.sleep() 函式暫停應用程式 5 秒,以便影像可以被 Caloriemama API 提交和處理。
然後使用 findelement() 函式找到網頁上的“Result”元素。同樣,它指定應使用By.CLASS NAME選項透過其類名識別該元素。
結果元素的名稱為“group-name”。程式碼以“Your dish is: [result text]”格式化文字,並使用print() 方法將結果元素的文字列印到控制檯。Caloriemama API 檢測到的食物專案的名稱顯示在結果文字中。
結論
本文演示瞭如何使用 Selenium WebDriver 自動執行將食物專案照片上傳到 Caloriemama API 並獲取食物專案營養資料的步驟。開發人員可以透過將 Selenium 的自動化功能與 Caloriemama 的 AI 驅動的食物識別技術相結合,構建可靠且準確的食物識別應用程式,幫助人們跟蹤他們的飲食並做出明智的營養決策。您可以按照本文中的技術說明將此技術整合到您自己的專案中,並使用複雜的食品識別功能增強您的應用程式。