Unity实现菜品识别的示例代码
作者:CoderZ1010 发布时间:2023-06-11 22:16:10
标签:Unity,菜品,识别
接口介绍:
识别超过9千种菜品,支持客户创建属于自己的菜品图库,可准确识别图片中的菜品名称、位置、卡路里信息,并获取百科信息,适用于多种客户识别菜品的业务场景中。
创建应用:
在产品服务中搜索图像识别,创建应用,获取AppID、APIKey、SecretKey信息:
查阅官方文档,以下是菜品识别接口返回数据参数详情:
定义数据结构:
using System;
/// <summary>
/// 菜品识别
/// </summary>
[Serializable]
public class DishRecognition
{
/// <summary>
/// 唯一的log id,用于问题定位
/// </summary>
public float log_id;
/// <summary>
/// 返回结果数目,及result数组中的元素个数
/// </summary>
public int result_num;
/// <summary>
/// 菜品识别结果数组
/// </summary>
public DishRecognitionResult[] result;
}
/// <summary>
/// 菜品识别结果
/// </summary>
[Serializable]
public class DishRecognitionResult
{
/// <summary>
/// 菜名
/// </summary>
public string name;
/// <summary>
/// 卡路里,每100g的卡路里含量
/// </summary>
public float calorie;
/// <summary>
/// 识别结果中每一行的置信度值,0-1
/// </summary>
public float probability;
/// <summary>
/// 百科词条
/// </summary>
public BaikeInfo baike_info;
}
[Serializable]
public class BaikeInfo
{
/// <summary>
/// 对应识别结果百度百科页面链接
/// </summary>
public string baike_url;
/// <summary>
/// 对应识别结果百科图片链接
/// </summary>
public string image_url;
/// <summary>
/// 对应识别结果百科内容描述
/// </summary>
public string description;
}
下载C# SDK:
下载完成后将AipSdk.dll动态库导入到Unity中:
以下是调用接口时传入的参数详情:
封装调用函数:
using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 图像识别
/// </summary>
public class ImageRecognition
{
//以下信息于百度开发者中心控制台创建应用获取
private const string appID = "";
private const string apiKey = "";
private const string secretKey = "";
/// <summary>
/// 菜品识别
/// </summary>
/// <param name="bytes">图片字节数据</param>
/// <param name="topNum">返回预测得分top结果数,默认为5</param>
/// <param name="filterThreshold">默认0.95,可以通过该参数调节识别效果,降低非菜识别率.</param>
/// <param name="baikeNum"> 返回百科信息的结果数,默认不返回</param>
/// <returns></returns>
public static DishRecognition Dish(byte[] bytes, int topNum = 5, float filterThreshold = 0.95f, int baikeNum = 0)
{
var client = new Baidu.Aip.ImageClassify.ImageClassify(apiKey, secretKey);
try
{
var options = new Dictionary<string, object>
{
{ "top_num", topNum },
{ "filter_threshold", Mathf.Clamp01(filterThreshold)},
{ "baike_num", baikeNum}
};
var response = client.DishDetect(bytes, options);
DishRecognition dishRecognition = JsonConvert.DeserializeObject<DishRecognition>(response.ToString());
return dishRecognition;
}
catch (Exception error)
{
Debug.LogError(error);
}
return null;
}
}
测试图片:
using System.IO;
using UnityEngine;
public class Example : MonoBehaviour
{
private void Start()
{
ImageRecognition.Dish(File.ReadAllBytes(Application.dataPath + "/Picture.jpg"));
}
}
来源:https://blog.csdn.net/qq_42139931/article/details/122300578


猜你喜欢
- 一、解决方案1声明:jdk1.8已经经过线上环境使用1. 调研JDK8的加密策略存在限制版本和无限制版本,随着越来越多的第三方工具只支持 J
- 本文实例为大家分享了java实现查找替换功能的具体代码,供大家参考,具体内容如下查找if(searchTxt.getText().equal
- 本文以实例阐述了C++中形参与实参的区别,有助于读者加深对于C++形参与实参的认识。形参出现在函数定义中,在整个函数体内都可以使用, 离开该
- 本文实例讲述了Android编程入门之HelloWorld项目目录结构。分享给大家供大家参考,具体如下:我们介绍了如何搭建Android开发
- 本文实现Unity调用手机摄像,拍摄,然后识别二维码,显示二维码的内容。需要导入一个zxing.unity.dll文件,现在这个脚本的识别数
- 一、冻结列DataGridViewColumn.Frozen属性为true时,该列左侧的所有列被固定,横向滚动时固定列不随滚动条滚动而左右移
- Java内部类一、 含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。二、
- 本文实例为大家分享了Android学习笔记之蓝牙功能的具体代码,供大家参考,具体内容如下蓝牙:短距离无线通讯技术标准。蓝牙协议分为4层,即核
- 1、对属性进行封装,使用户不能直接输入数据,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值。则需要将属性声明为
- 本文实例为大家分享了Android百度地图之方向感应和模式更改,供大家参考,具体内容如下目标效果:菜单中设置几种模式,点击可查看不同的地图形
- 接口直接返回图片数据起因最近在做涉及到分享推广的业务,需要由业务员分享二维码进入推广页面,由于是新项目,前期预算和用量都有限,没有搭建对象存
- 在Android开发中,列表可以说是最常见的了,一般都是使用ListView,当涉及到二维数组时,更多的使用到ExpandableListV
- 前言Jetpack Compose(简称 Compose )是 Google 官方推出的基于 Kotlin 语言的 Android 新一代
- 一.简单介绍1.配置相关的依赖2.配置模式3写.mapper、controller、service4.配置yaml文件 配置mybatis全
- 本文实例为大家分享了java实现学生成绩档案管理系统的具体代码,供大家参考,具体内容如下实验要求• 学生信息录入,信息包括学号、姓名、专业、
- 在Java中Timer是java.util包中的一个工具类,提供了定时器的功能。我们可以创建一个Timer对象,然后调用其schedule方
- 在 Flutter 中使用图片是最基础能力之一。作为春节开工后的第一篇文章,17 做了精心准备,满满的都是干货!本文介绍如何在 Flutte
- 引言平时使用ProtoStuff作为序列化工具,对于一些POJO对象序列化,但是在实际使用中,发现针对BigDecimal对象进行序列化时却
- 背景:我们在开发的过程中可能需要随机生成一个ID,例如数据库中的某个ID有时候也要对其进行校验。UUID:UUID,是Universally
- 在实际项目中,Java有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell。先把C写出来的make成