服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity实现菜品识别的示例代码

Unity实现菜品识别的示例代码

2022-12-26 13:57CoderZ1010 C#

这篇文章主要介绍了如何通过Unity实现菜品识别,可以准确识别图片中的菜品名称、位置、卡路里信息,并获取百科信息。感兴趣的小伙伴可以了解一下

接口介绍:

识别超过9千种菜品,支持客户创建属于自己的菜品图库,可准确识别图片中的菜品名称、位置、卡路里信息,并获取百科信息,适用于多种客户识别菜品的业务场景中。

创建应用:

在产品服务中搜索图像识别,创建应用,获取AppID、APIKey、SecretKey信息:

Unity实现菜品识别的示例代码

Unity实现菜品识别的示例代码

查阅官方文档,以下是菜品识别接口返回数据参数详情:

Unity实现菜品识别的示例代码

定义数据结构:

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:

Unity实现菜品识别的示例代码

下载完成后将AipSdk.dll动态库导入到Unity中:

Unity实现菜品识别的示例代码

以下是调用接口时传入的参数详情:

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;
  }
}

测试图片:

Unity实现菜品识别的示例代码

using System.IO;
using UnityEngine;

public class Example : MonoBehaviour
{
  private void Start()
  {
      ImageRecognition.Dish(File.ReadAllBytes(Application.dataPath + "/Picture.jpg"));
  }
}

Unity实现菜品识别的示例代码

到此这篇关于Unity实现菜品识别的示例代码的文章就介绍到这了,更多相关Unity菜品识别内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_42139931/article/details/122300578

延伸 · 阅读

精彩推荐
  • C#C#获取某路径文件夹中全部图片或其它指定格式的文件名的实例方法

    C#获取某路径文件夹中全部图片或其它指定格式的文件名的实例

    在本篇文章里小编给大家整理的是关于C#获取某路径文件夹中全部图片或其它指定格式的文件名的实例方法,需要的朋友们参考下。...

    小xin_不惊7572022-08-08
  • C#C#实现简单超市收银系统

    C#实现简单超市收银系统

    这篇文章主要为大家详细介绍了C#实现简单超市收银系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    向上的青春23311832022-12-25
  • C#C# WinForm调用Shell_NotifyIcon的示例代码

    C# WinForm调用Shell_NotifyIcon的示例代码

    这篇文章主要介绍了C# WinForm调用Shell_NotifyIcon的示例代码,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    正在缓冲9632022-10-17
  • C#浅谈c# 浮点数计算

    浅谈c# 浮点数计算

    本文通过具体的示例给大家演示了下C#中浮点数运算所遇到的问题及解决方法,有需要的小伙伴可以参考下...

    大稳·杨10012022-01-22
  • C#C# Color.FromArgb()及系统颜色对照表一览

    C# Color.FromArgb()及系统颜色对照表一览

    这篇文章主要介绍了C# Color.FromArgb()及系统颜色对照表一览,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    小宇飞刀7642022-10-28
  • C#深入解析C#中的命名实参和可选实参

    深入解析C#中的命名实参和可选实参

    这篇文章主要介绍了C#中的命名实参和可选实参,在COM接口相关的开发中经常可以用到,需要的朋友可以参考下...

    C#教程网9752021-11-09
  • C#C#通过正则表达式实现提取网页中的图片

    C#通过正则表达式实现提取网页中的图片

    本文给大家分享的是使用C#通过正则表达式来实现提取网页中的图片的代码,十分的方便,有需要的小伙伴可以参考下。...

    C#教程网8792021-11-05
  • C#如何用C#验证IP是否为局域网地址

    如何用C#验证IP是否为局域网地址

    这篇文章主要介绍了如何用C#验证IP是否为局域网地址,文中讲解非常细致,代码帮助大家更好的参考和学习,感兴趣的朋友可以了解下...

    .NET骚操作4082022-09-14