Unity 百度AI实现Logo商标识别
作者:CoderZ1010 发布时间:2023-06-09 17:04:26
标签:Unity,百度AI,商标,识别
接口介绍:
该请求用于检测和识别图片中的品牌LOGO信息。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中LOGO的名称、位置和置信度。当效果欠佳时,可以建立子库(在百度开发者中心控制台创建应用并申请建库)并通过调用logo入口接口完成自定义logo入库,提高识别效果。
创建应用:
在产品服务中搜索图像识别,创建应用,获取AppID、APIKey、SecretKey信息:
查阅官方文档,以下是Logo商标识别接口返回数据参数详情:
定义数据结构:
using System;
/// <summary>
/// Logo识别响应数据结构
/// </summary>
[Serializable]
public class LogoRecognition
{
/// <summary>
/// 请求标识码,随机数,唯一
/// </summary>
public float log_id;
/// <summary>
/// 返回结果数目,即:result数组中元素个数
/// </summary>
public int result_num;
/// <summary>
/// 返回结果数组,每一项为一个识别出的logo
/// </summary>
public LogoRecognitionResult[] result;
}
[Serializable]
public class LogoRecognitionResult
{
/// <summary>
/// 位置信息
/// </summary>
public LogoRecognitionResultLocation location;
/// <summary>
/// 识别的品牌名称
/// </summary>
public string name;
/// <summary>
/// 分类结果置信度(0--1.0)
/// </summary>
public float probability;
/// <summary>
/// type=0为1千种高优商标识别结果;type=1为2万类logo库的结果;其它type为自定义logo库结果
/// </summary>
public int type;
}
/// <summary>
/// 位置信息
/// </summary>
[Serializable]
public class LogoRecognitionResultLocation
{
/// <summary>
/// 左起像素位置
/// </summary>
public float left;
/// <summary>
/// 上起像素位置
/// </summary>
public float top;
/// <summary>
/// 像素宽
/// </summary>
public float width;
/// <summary>
/// 像素高
/// </summary>
public float height;
}
下载C# SDK:
下载完成后将AipSdk.dll动态库导入到Unity中:
以下是调用接口时传入的参数详情:
封装调用函数:
using System;
using UnityEngine;
using Newtonsoft.Json;
using System.Collections.Generic;
/// <summary>
/// 图像识别
/// </summary>
public class ImageRecognition
{
//以下信息于百度开发者中心控制台创建应用获取
private const string appID = "";
private const string apiKey = "";
private const string secretKey = "";
/// <summary>
/// Logo商标识别
/// </summary>
/// <param name="bytes">Logo图片字节数据</param>
/// <param name="customLib">是否只使用自定义logo库的结果,默认false:返回自定义库+默认库的识别结果</param>
/// <returns></returns>
public static LogoRecognition Logo(byte[] bytes, bool customLib = false)
{
var client = new Baidu.Aip.ImageClassify.ImageClassify(apiKey, secretKey);
try
{
var options = new Dictionary<string, object>
{
{ "custom_lib", customLib}
};
var response = client.LogoSearch(bytes, options);
LogoRecognition logoRecognition = JsonConvert.DeserializeObject<LogoRecognition>(response.ToString());
return logoRecognition;
}
catch (Exception error)
{
Debug.LogError(error);
}
return null;
}
}
测试图片:
using System.IO;
using UnityEngine;
public class Example : MonoBehaviour
{
private void Start()
{
ImageRecognition.Logo(File.ReadAllBytes(Application.dataPath + "/Picture.jpg"));
}
}
来源:https://blog.csdn.net/qq_42139931/article/details/122266639


猜你喜欢
- 一、前言 本学期学习了JAVA语言,在学期的结束,写一个有操作界面,与数据库关联的管理系统,用来巩固自己本学习所学的知识。 用到的知识:JA
- 本文实例讲述了Android实现捕获TextView超链接的方法。分享给大家供大家参考,具体如下:这里分享一篇捕获TextView超链接的文
- Scala小程序详解1. 交互式模式在命令行窗口中,输入Scala命令:xiaosi@Qunar:~$ scalaWelcome to S
- 用Stream解决两层List属性求和假设一个人有很多个银行账户,每个银行账户中存有不同金额的存款,那么我们如何用Stream求一组人的所有
- 一、什么是并查集对于一种数据结构,肯定是有自己的应用场景和特性,那么并查集是处理什么问题的呢?并查集是一种树型的数据结构,用于处理一些不相交
- 1、ThreadLocal知识体系本文还是不能免俗,在回答这个问题之前需要先和大家介绍一下ThreadLocal的知识,使大家对Thread
- 本文实例讲述了Java基于swing实现的弹球游戏代码。分享给大家供大家参考。主要功能代码如下:package Game;import ja
- 本次数据请求使用postman, postman下载地址:https://www.getpostman.com/一、页面跳转1. 页面跳转@
- 简介:Android Studio是Android的官方IDE。它是专为Android而打造,可以加快您的开发速度,帮助您为每款Androi
- SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JA
- 1.object:匿名内部类在Android最常用的匿名内部类之一就是点击事件,用Java语言写的话就是下面这样:public interf
- 1.分发对象-MotionEvent事件类型有:1.ACTION_DOWN-----手指刚接触屏幕2.ACTION_MOVE------手指
- 前言C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加
- Java Set集合的遍历及实现类的比较Java中Set集合是一个不包含重复元素的Collection,首先我们先看看遍历方法package
- 本文较为详细的分析了Java中对象的销毁方法。分享给大家供大家参考。具体分析如下:Java中的基本数据类型变量和对象的名称引用变量如定义在方
- mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法雪花算法snowflflake是Twitter开源的分
- 关于base64编码Encode和Decode编码的几种方式Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个B
- 首先我们知道:JVM发生内存错误的类型1、堆内存泄漏:OutOfMemory:Java heap space此种内存泄漏,增加内存,只能暂时
- Spring @RequestParam对象绑定在Spring中,如果在方法参数列表中使用@RequestParam标注多个参数,会让映射方
- 一、版本说明spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。原因:spr