C#---百度图像识别SDK的控制台简单应用;

(刚刚转C#,一个项目用到,就分享出来,第一次写博客,有不足之处还请指正,某些编写方式只是习惯使然)
1、首先,在百度AI平台进行注册登录:百度AI
2、然后点开右上角的控制台,找到图像识别,创建应用,然后就可以看到创建的密钥,我们主要获取以下几个参数,
API_KEY,
SECRET_KEY
3、将对应C#版本的SDK下载后,添加引用到工程文件引用中;
主要是以下两个.dll库,分别是
Aip.Sdk——百度图像识别(现已开源)
Newtonsoft.Json -----可针对Json进行序列化,以及反序列化,通过实例打印json部分信息。

4、并且添加引用

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Forms;
using SD = System.Drawing;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
using Baidu.Aip.ImageClassify;

5、尝试运行以下部分代码

class Program
    {
        static void Main(string[] args)
        {//获取百度AI关键信息
            var API_KEY = "******************";
            var SECRET_KEY = "***************";
            var client = new Baidu.Aip.ImageClassify.ImageClassify(API_KEY,  SECRET_KEY);
            client.Timeout = 60000;

            Program Txsb = new Program();
            var image = File.ReadAllBytes(@"C:/Users/anyou/Desktop/胡歌.png");//读取文件路径,PS。当然选取胡歌了。。。
            try
            {
                var result = client.AdvancedGeneral(image);
                var options = new Dictionary<string, object>{ { "baike_num", 5 } };
                result = client.AdvancedGeneral(image, options);             
                string JsonText = result.ToString();
                Root rb = JsonConvert.DeserializeObject<Root>(JsonText);
                Console.WriteLine(JsonText);
             }
             catch (Exception ex)
             {
                MessageBox.Show(ex.Message);
             }
            Console.ReadKey();  
       }

/6、控制台打印以下信息;
控制台信息
为方便分析,我将它拎出来。

{
  "log_id": 7706425430171943794,
  "result_num": 5,
  "result": [
    {
      "score": 0.816127,
      "root": "公众人物",
      "baike_info": {
        "baike_url": "http://baike.baidu.com/item/%E8%83%A1%E6%AD%8C/312718",
        "image_url": "http://imgsrc.baidu.com/baike/pic/item/d009b3de9c82d158b62f49ef890a19d8bc3e423a.jpg",
        "description": "胡歌,1982年9月20日出生于上海市徐汇区,中国内地男演员、歌手。1996年,14岁的胡歌便成为上海教育电 视台的小主持人,2005年毕业于上海戏剧学院表演系,同年在仙侠剧《仙剑奇侠传》中塑造了“李逍遥”一角,并演唱该剧插曲《六月的雨》《逍遥叹》。2006年8月遭受严重车祸,2007年6月复出。2009年主演仙侠剧《仙剑奇侠传三》。2010年主演的穿越剧《神话》在央视八套播出。2011年参演历史题材电影《辛亥革命》提名大众电影百花奖“最佳新人奖”。2012年主演玄幻剧《轩辕剑之天之痕》。2013年主演两部话剧,凭借《如梦之梦》获得北京丹尼国际舞台表演艺术奖“最佳男演员奖”。2014年参演战争剧《四十九日·祭》提名上海电视节白玉兰奖“最佳男配角奖”。2015年主演的谍战剧《伪装者》、古装剧《琅琊榜》、都市剧《大好时光》相继播出,获得中国电视剧飞天奖“优秀男演员提名奖”、上海电视节白玉兰奖“最佳男主角奖”、中国电视金鹰奖“观众喜爱的男演员奖”、中国金鹰电视艺术节“最具人气男演员奖”等奖项。2016年成为上海旅游形象大使,登上央视春晚演唱歌曲《相亲相爱》。2017年二度登上央视春晚演唱歌曲《在此刻》,获得共青团中央“全国向上向善好青年”崇义友善好青年称号,2018年凭借都市剧《猎场》二度提名上海电视节白玉兰奖“最佳男主角奖”。2019年,主演的刁亦男执导电影《南方车站的聚会》入围戛纳国际电影节主竞赛单元。"
      },
      "keyword": "胡歌"
    },
    {
      "score": 0.643614,
      "root": "人物-人物特写",
      "baike_info": {},
      "keyword": "人物特写"
    },
    {
      "score": 0.468114,
      "root": "人物-人物特写",
      "baike_info": {
        "baike_url": "http://baike.baidu.com/item/%E7%BE%8E%E5%A5%B3/109596",
        "image_url": "http://imgsrc.baidu.com/baike/pic/item/91529822720e0cf3acdfc0280046f21fbe09aa3d.jpg",
        "description": "美女是一个汉语词汇,拼音是měi nǚ,指容貌姣好、仪态优雅的女子。中国古代关于美女的形容词和诗词歌赋众多,形成了丰富的美学资料。《墨子·公孟》:“譬若美女,处而不出,人争求之。”"
      },
      "keyword": "美女"
    },
    {
      "score": 0.217346,
      "root": "人物活动-人物特写",
      "baike_info": {
        "baike_url": "http://baike.baidu.com/item/%E7%94%B7%E5%AD%A9/20490172",
        "image_url": "http://imgsrc.baidu.com/baike/pic/item/314e251f95cad1c82513e4bd753e6709c83d51fb.jpg",
        "description": "《男孩》是梁博演唱的歌曲,由梁博创作词曲并编曲,并由梁博在湖南卫视《歌手2017》首演。"
      },
      "keyword": "男孩"
    },
    {
      "score": 0.038173,
      "root": "商品-服装",
      "baike_info": {
        "baike_url": "http://baike.baidu.com/item/%E9%A2%86%E5%B8%A6/448461",
        "image_url": "http://imgsrc.baidu.com/baike/pic/item/11385343fbf2b2112edc2a53c78065380cd78e39.jpg",
        "description": "领带是上装领部的服饰件,系在衬衫领子上并在胸前打结,广义上包括领结。它通常与西服搭配使用,是人们(特别是男士们)结婚以及日常生活中最基本的服饰品。在社交礼仪中,穿西装应系领带,长度以到皮带扣处为宜,如果穿马甲或毛衣时,领带应放在它们后面,领带夹一般夹在衬衫的第四五个钮扣之间。"
      },
      "keyword": "领带"
    }
  ]
}

7、借助[在线工具](http://www.bejson.com/)分析得到

public class Baike_info
{
    /// <summary>
    /// 
    /// </summary>
    public string baike_url { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public string image_url { get; set; }
    /// <summary>
    /// 胡歌,1982年9月20日出生于上海市徐汇区,中国内地男演员、歌手。1996年,14岁的胡歌便成为上海教育电 视台的小主持人,2005年毕业于上海戏剧学院表演系,同年在仙侠剧《仙剑奇侠传》中塑造了“李逍遥”一角,并演唱该剧插曲《六月的雨》《逍遥叹》。2006年8月遭受严重车祸,2007年6月复出。2009年主演仙侠剧《仙剑奇侠传三》。2010年主演的穿越剧《神话》在央视八套播出。2011年参演历史题材电影《辛亥革命》提名大众电影百花奖“最佳新人奖”。2012年主演玄幻剧《轩辕剑之天之痕》。2013年主演两部话剧,凭借《如梦之梦》获得北京丹尼国际舞台表演艺术奖“最佳男演员奖”。2014年参演战争剧《四十九日·祭》提名上海电视节白玉兰奖“最佳男配角奖”。2015年主演的谍战剧《伪装者》、古装剧《琅琊榜》、都市剧《大好时光》相继播出,获得中国电视剧飞天奖“优秀男演员提名奖”、上海电视节白玉兰奖“最佳男主角奖”、中国电视金鹰奖“观众喜爱的男演员奖”、中国金鹰电视艺术节“最具人气男演员奖”等奖项。2016年成为上海旅游形象大使,登上央视春晚演唱歌曲《相亲相爱》。2017年二度登上央视春晚演唱歌曲《在此刻》,获得共青团中央“全国向上向善好青年”崇义友善好青年称号,2018年凭借都市剧《猎场》二度提名上海电视节白玉兰奖“最佳男主角奖”。2019年,主演的刁亦男执导电影《南方车站的聚会》入围戛纳国际电影节主竞赛单元。
    /// </summary>
    public string description { get; set; }
}

public class ResultItem
{
    /// <summary>
    /// 
    /// </summary>
    public double score { get; set; }
    /// <summary>
    /// 公众人物
    /// </summary>
    public string root { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public Baike_info baike_info { get; set; }
    /// <summary>
    /// 胡歌
    /// </summary>
    public string keyword { get; set; }
}

public class Root
{
    /// <summary>
    /// 
    /// </summary>
    public int log_id { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public int result_num { get; set; }
    /// <summary>
    /// 
    /// </summary>
    public List <ResultItem > result { get; set; }
}

8、以下为全部代码

/******************************************
 * Copyright (c) 2019 All Rights Reserved.
 * 命名空间:ConsoleApp10
 * 文件名: Class1
 * 创建人:XXX
 * 创建时间:2019/6/18/周二 12:58:20
 * 描述 
 ******************************************
 * 修改标记
 * 修改时间:2019/6/18/周二 12:58:20
 * 修改人:XXX
 * 描述:
 ******************************************/
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Forms;
using SD = System.Drawing;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
using Baidu.Aip.ImageClassify;
namespace ConsoleApp10
{
    //
    public class Root
    {
        public string log_id { get; set; }
        public int result_num { get; set; }
        public List<ResultItem> result { get; set; }
    }
    public class ResultItem
    {
        public double score { get; set; }
        public string root { get; set; }
        public Baike_info baike_info { get; set; }
        public string keyword { get; set; }
    }
    public class Baike_info
    {
        public string baike_url { get; set; }
        public string image_url { get; set; }
        public string description { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {//获取百度AI关键信息 
            var API_KEY = "****************";
            var SECRET_KEY = "**********";
            var client = new Baidu.Aip.ImageClassify.ImageClassify(API_KEY, SECRET_KEY);
            client.Timeout = 60000; 
            Program Txsb = new Program();
            var image = File.ReadAllBytes(@"C:/Users/anyou/Desktop/胡歌.png");//读取文件路径
            try
            {
                var result = client.AdvancedGeneral(image);
                var options = new Dictionary<string, object>{ { "baike_num", 5 } };
                result = client.AdvancedGeneral(image, options);  //实例化           
                string JsonText = result.ToString();
                Root rb = JsonConvert.DeserializeObject<Root>(JsonText);//解析
                Console.WriteLine(JsonText);
                //以下只显示匹配度最大的一组。
                Console.WriteLine("匹配度:"+rb.result[0].score);
                Console.WriteLine("类型:" + rb.result[0].root);
                Console.WriteLine("关键词:" + rb.result[0].keyword);
                Console.WriteLine("描述:" + rb.result[0].baike_info.description);
                Console.WriteLine("百度百科地址:" + rb.result[0].baike_info.baike_url);
                Console.WriteLine("图片地址:" + rb.result[0].baike_info.image_url);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            Console.ReadKey();          
        }
    }
}

打印结果
最终运行结果
9、反思;
在unity开发的过程中,借助C#脚本实现相关功能,我们需求是代码的简洁和易于移植,控制台应用完美契合,其实这里在实际应用中我们不能将图片限定为某一张,那么就需要在移植的时候添加一个uploadImage命令使得其真正成为一个应用。在控制台应用中,也可以调用Windows.Froms中的OpenFileDialog选择文件,实现下面这样的效果。
好了今天的分享就结束了,有不足之处还请指正。如果对你有帮助,请留下你宝贵的评论。
最后,放一张图片。哈哈&&&&&&&&&&&
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值