使用 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 驱动的食物识别技术相结合,构建可靠且准确的食物识别应用程序,帮助人们跟踪他们的饮食并做出明智的营养决策。您可以按照本文中的技术说明将此技术集成到您自己的项目中,并使用复杂的食品识别功能增强您的应用程序。