使用 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 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告