利用C#实现百度接口图像识别

时间:2024-03-30 09:22:34

本人是学软件开发的在校学生,因为之前要做一个小型的程序(PC端的截图工具)。在实现基本功能后想要增加一些额外的功能,

偶然的逛到了百度AI开发平台,突发奇想要加一个图像识别功能进来(因为百度AI接口大部分免费的,不用白不用(*^▽^*)),就写了

这么一个Demo。

开始进入主题:

要使用百度的接口,首先就是得要弄到百度接口的API Key啦,这个比较容易实习,不会的同学百度一下你就知道。

在获取到API Key后开始创建一个winfrom程序

简单的布局一下,一个图片框,一个文本框,两个按钮,一个下拉框(简单的做一个demo,不考虑美观)

利用C#实现百度接口图像识别 

其次是要创建一个类,用来解析百度接口返回的json数据

利用C#实现百度接口图像识别利用C#实现百度接口图像识别

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CarAir
{
   /// <summary>
   /// 定义与百度返回的json数据相同的类
   /// </summary>
    public class Baike_info
    {
        public string baike_url { get; set; }
        public string image_url { get; set; }
        public string description { get; set; }
    }
    public class Result
    {
        public string score { get; set; }
        public string root { get; set; }
        public Baike_info baike_info { get; set; }
        public string keyword { get; set; }
    }
    public class RootObject
    {
        public string log_id { get; set; }
        public string result_num { get; set; }
        public List<Result> result { get; set; }
    }

}

其次是定义一个获取返回数据的方法

 public static void Get()
        {
            // 设置APPID/AK/SK
            var APP_ID = "申请到的ID";
            var API_KEY = "申请到的KEY";
            var SECRET_KEY = "申请到的SECRET_KEY";
            var client = new Baidu.Aip.ImageClassify.ImageClassify(API_KEY, SECRET_KEY);
            client.Timeout = 60000;  // 修改超时时间
            var image = File.ReadAllBytes(Path);//path是上传的图片路径
            // 调用通用物体识别,可能会抛出网络等异常,请使用try/catch捕获
            try
            {
                var result = client.AdvancedGeneral(image);
               
                // 如果有可选参数
                var options = new Dictionary<string, object>{
            {"baike_num", 5}};
                result = client.AdvancedGeneral(image, options);

           }

         catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

}

获取到的json类型数据result就是接口返回的结果,接下来的解析result就得到想要的内容了

结果:

利用C#实现百度接口图像识别

第一次写分享文档,不足之处请大家多多包涵(*^▽^*)