调用百度API实现菜品识别

1、作者介绍

李延,男,西安工程大学电子信息学院,2022级研究生
研究方向:扬声器异常声
电子邮件:[email protected]

张思怡,女,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

2、百度API菜品识别接口介绍

2.1 图像识别接口介绍

智能百度云提供一个API接口,同时调用多个模型服务。支持图像识别的多个接口:通用物体和场景识别、图像单主体检测、动物识别、植物识别、果蔬识别、自定义菜品识别-检索、菜品识别、红酒识别、货币识别、地标识别、图像多主体检测等12个模型服务的调用。可通过入参灵活指定需要调用的模型服务,传入图像,返回指定模型的识别结果。
该请求用于菜品识别。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的菜品名称、卡路里信息、置信度。

2.2 接口使用说明

图像识别相关接口同时提供独立的服务接口,针对每个模型的出入参,可参考百度AI开放平台官网每个独立服务接口的文档。
组合服务接口根据请求参数确定要使用的模型服务类型,具体的请求参数见下方描述。

2.2.1 请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/api/v1/solution/direct/imagerecognition/combination

URL参数

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取”

Header如下

参数
Content-Type application/json;charset=utf-8

2.2.2 请求参数

参数 类型 是否必须 说明
image string 图像数据,base64编码,示例如:/9j/4AAQSkZJRgABAQEPMpJkR0FdXVridlPy/9k=
imgUrl string 图像Url,不能与image并存,不需要urlEncode,示例如:https://aip.bdstatic.com/portal-pc-node/dist/1591263471100/images/technology/imagerecognition/general/1.jpg
scenes array 指定本次调用的模型服务,以字符串数组表示。元素含义如下:advanced_general:通用物体和场景识别;object_detect:图像单主体检测;multi_object_detect:图像多主体检测;animal:动物识别;plant:植物识别;ingredient:果蔬识别;dish_search:自定义菜品识别-检索;dishs:菜品识别;red_wine:红酒识别;currency:货币识别;landmark:地标识别示例如:“scenes”:[“currency”,”animal”,”plant”]
sceneConf jsonObject 对特定服务,支持的个性化参数,若不填则使用默认设置。jsonObject说明:key为要设置入参的服务类型,可取值同scenes字段,例如advanced_general:通用物体和场景识别;object_detect:图像单主体检测

3、调用百度API流程

  • 搜索百度智能云,注册并登录百度智能云。

在这里插入图片描述

  • 进入产品服务,选中图像识别。

在这里插入图片描述

  • 领取免费测试次数之后,选择创建应用。

在这里插入图片描述

  • 创建菜品识别应用完成之后,点击应用列表,获取Apple ID、API ID和Secret Key。

在这里插入图片描述

4、代码实现

4.1 完整代码

from aip import AipImageClassify

""" 你的 APPID AK SK """
APP_ID = '你的ID'
API_KEY = '你的Key'
SECRET_KEY = '你的SECRET_KEY'

AipImageClassify = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
image = get_file_content('path')    # path为测试菜品路径

""" 如果有可选参数 """
options = {
    
    }
options["top_num"] = 3
options["filter_threshold"] = "0.7"
options["baike_num"] = 5

""" 调用菜品识别 """
AipImageClassify.dishDetect(image,options)

""" 带参数调用菜品识别 """
result = AipImageClassify.dishDetect(image,options)
print(result)
print(result["result"][0]["name"])

4.2 测试菜品

在这里插入图片描述

4.3 实验结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37758063/article/details/130813699