使用 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 驅動的食物識別技術相結合,構建可靠且準確的食物識別應用程式,幫助人們跟蹤他們的飲食並做出明智的營養決策。您可以按照本文中的技術說明將此技術整合到您自己的專案中,並使用複雜的食品識別功能增強您的應用程式。

更新於: 2023年4月18日

340 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告