接口介绍:

识别近千种水果和蔬菜的名称,适用于识别只含有一种果蔬的图片,可自定义返回识别结果数,适用于果蔬介绍相关的美食类app中。

创建应用:     

在产品服务中搜索图像识别,创建应用,获取appid、apikey、secretkey信息:

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

定义数据结构:

using system;
 
/// <summary>
/// 果蔬识别
/// </summary>
[serializable]
public class ingredientrecognition
{
    /// <summary>
    /// 唯一的log id,用于问题定位
    /// </summary>
    public float log_id;
    /// <summary>
    /// 返回结果数目,及result数组中的元素个数
    /// </summary>
    public int result_num;
    /// <summary>
    /// 识别结果数组
    /// </summary>
    public ingredientrecognitionresult[] result;
}
 
/// <summary>
/// 果蔬识别结果
/// </summary>
[serializable]
public class ingredientrecognitionresult
{
    /// <summary>
    /// 食材名称
    /// </summary>
    public string name;
    /// <summary>
    /// 置信度
    /// </summary>
    public float score;
}

下载c# sdk:

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

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

在下载的sdk中并未发现通过url调用的重载函数,大概是官方文档未更新:

封装调用函数: 

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结果数,如果为空或小于等于0默认为5;如果大于20默认20</param>
    /// <returns></returns>
    public static ingredientrecognition ingredient(byte[] bytes, int topnum = 5)
    {
        var client = new baidu.aip.imageclassify.imageclassify(apikey, secretkey);
        try
        {
            var options = new dictionary<string, object>
            {
                { "top_num", topnum },
            };
            var response = client.ingredient(bytes, options);
            ingredientrecognition ingredientrecognition = jsonconvert.deserializeobject<ingredientrecognition>(response.tostring());
            return ingredientrecognition;
        }
        catch (exception error)
        {
            debug.logerror(error);
        }
        return null;
    }
}

测试图片:

using system.io;
using unityengine;
 
public class example : monobehaviour
{
    private void start()
    {
        imagerecognition.ingredient(file.readallbytes(application.datapath + "/picture.jpg"));
    }
}

以上就是unity接入百度ai实现果蔬识别的详细内容,更多关于unity果蔬识别的资料请关注www.887551.com其它相关文章!