1.首先,在百度AI平臺進行註冊登錄:百度AI
2.然後點開右上角的控制檯,找到圖像識別,創建應用,然後就可以看到創建的密鑰
3.打開Vs2017,創建Windows窗體應用,然後添加兩個Label,分別命名爲Info1,Info2,添加一個按鈕,一個pictureBox,pictureBox取名爲pictureBox1,然後點開按鈕。
4.然後去百度SDK下載要用到的引用,下過來可能有很多個Net版本的,可以在這裏自己查看Net版本
5.然後把我們sdk引用盡我們的工程裏面。
6.回到腳本,引入相應的命名空間
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Baidu.Aip;
using System.IO;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using AForge.Video.DirectShow;
namespace BaiDuTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Btn_Click(object sender, EventArgs e)
{
AdvancedGeneralDemo();
}
public void AdvancedGeneralDemo()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
string _path = ofd.FileName;
// 設置APPID/AK/SK,回到剛纔的創建的控制檯,找到之後直接複製回來設置
var APP_ID = "設置你的AppID";
var API_KEY = "設置你的API Key";
var SECRET_KEY = "設置你的Secret Key";
var client = new Baidu.Aip.ImageClassify.ImageClassify(API_KEY, SECRET_KEY);
client.Timeout = 60000; // 修改超時時間
//var image = File.ReadAllBytes(Application.LocalUserAppDataPath + "/Earth.jpg");
if (!_path.Contains(".jpg"))//判斷有沒有打開一張圖片,如果路徑有問題,會馬上報錯
{
return;
}
else
{
var image = File.ReadAllBytes(_path);
pictureBox1.Image = Image.FromFile(_path);
// 調用通用物體識別,可能會拋出網絡等異常,請使用try/catch捕獲
var result = client.AdvancedGeneral(image);
string intext = result.ToString();
Info1.Text = result.ToString();
JObject json1 = (JObject)JsonConvert.DeserializeObject(intext);
JArray array = (JArray)json1["result"];
foreach (var item in array)
{
info2.Text = item["keyword"].ToString();//直接使用遍歷通過鍵獲得相應的值
break;
}
// 如果有可選參數
var options = new Dictionary<string, object>{
{"baike_num", 5}
};
// 帶參數調用通用物體識別
result = client.AdvancedGeneral(image, options);
string info = result.ToString();
File.WriteAllText("H:/圖像識別/Info.txt", info, Encoding.Default);
}
}
}
7.效果: