首先访问百度AI网站:https://cloud.baidu.com/,按照下图的指示点开到应用管理的页面。

穿件完成之后到管理中可以查看到对应的

添加工具类:

using System;
using System.IO; namespace FaceCompare_Console
{
class FileUtils
{
/// <summary>
/// 返回路径所指文件的base64编码
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static string getFileBase64(string path)
{
if (!File.Exists(path))
return ""; FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, , buffer.Length);
fs.Close();
return Convert.ToBase64String(buffer);
}
}
}

添加Token类:(注意:获取的Token30天才会更新一次,因此最好不要每次都获取,而是应该获取一次存储在本地,30天后再更新)

using System;
using System.Collections.Generic;
using System.Net.Http; namespace FaceCompare_Console
{
public static class AccessToken
{
// 调用getAccessToken()获取的 access_token建议根据expires_in 时间 设置缓存
// 返回token示例
public static String TOKEN = "24.4c28a8feedb8a2c71fa552522284641f.2592000.1546578079.282335-15054444"; // 百度云中开通对应服务应用的 API Key 建议开通应用的时候多选服务
private static String clientId = "*********************";
// 百度云中开通对应服务应用的 Secret Key
private static String clientSecret = "**********************"; /// <summary>
/// 获取Token
/// </summary>
/// <returns></returns>
public static String getAccessToken()
{
String authHost = "https://aip.baidubce.com/oauth/2.0/token";
HttpClient client = new HttpClient();
List<KeyValuePair<String, String>> paraList = new List<KeyValuePair<string, string>>();
paraList.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
paraList.Add(new KeyValuePair<string, string>("client_id", clientId));
paraList.Add(new KeyValuePair<string, string>("client_secret", clientSecret)); HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
String result = response.Content.ReadAsStringAsync().Result;
LitJson.JsonData jd = LitJson.JsonMapper.ToObject(result);
return jd["access_token"].ToString();
}
}
}

接下来是面部比对的代码:

using System;
using System.IO;
using System.Net;
using System.Text; namespace FaceCompare_Console
{
class FaceMatch
{
/// <summary>
/// 人脸比对
/// </summary>
/// <param name="token">token</param>
/// <param name="img1">图像1文件路径</param>
/// <param name="img2">图像2文件路径</param>
/// <returns>json格式</returns>
public static string match(string token, string img1, string img2)
{
string host = "https://aip.baidubce.com/rest/2.0/face/v3/match?access_token=" + token;
Encoding encoding = Encoding.Default;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
request.Method = "post";
request.KeepAlive = true;
String str = "[{\"image\":\"" + FileUtils.getFileBase64(img1) + "\",\"image_type\":\"BASE64\",\"face_type\":\"LIVE\",\"quality_control\":\"LOW\",\"liveness_control\":\"NONE\"},{\"image\":\"" + FileUtils.getFileBase64(img2) + "\",\"image_type\":\"BASE64\",\"face_type\":\"LIVE\",\"quality_control\":\"LOW\",\"liveness_control\":\"NONE\"}]";
byte[] buffer = encoding.GetBytes(str);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, , buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
string result = reader.ReadToEnd();
Console.WriteLine("人脸对比:");
Console.WriteLine(result);
return result;
}
}
}

最后是主程序中调用比对程序进行比对:

using System;

namespace FaceCompare_Console
{
class Program
{
static void Main(string[] args)
{
AccessToken.getAccessToken();
FaceMatch.match(AccessToken.TOKEN, @"D:\Compare\web.jpg", @"D:\Compare\web1.jpg");
Console.ReadKey();
}
}
}

输出的结果如下:

score 是比对的结果分值,满分100,根据比对的要求判断分值多少属于比对程序即可。

更加详细的参数说明可以访问官网查看:https://ai.baidu.com/docs#/Face-Match-V3/top

补充:代码中用到Http.Net这些类可以去Nuget管理中在线查找并下载:

对返回结果的json格式需要解析的话也可以在Nuget中搜索Newtonsoft或者Litjson进行解析!

最新文章

  1. 关于 IIS 中 Excel 访问的问题
  2. 重新编译安装gcc-4.1.2(gcc版本降级)之TFS安装
  3. Codeforces Round #364 (Div. 2) Cards
  4. 主席树模板(poj2104)
  5. Android OkHttp详解
  6. cocos2dx工程
  7. Android原生APP内分享
  8. php_cawler_html嵌套标签清洗
  9. C++中L和_T()之区别
  10. oracle备份、还原
  11. const vector&lt;int&gt; 和 vector&lt;const int&gt;问题讨论
  12. while循环小练习-猜答案
  13. CAP 2.4版本发布,支持版本隔离特性
  14. AI-逻辑回归函数、激活函数、损失函数
  15. Mybaits之Mapper动态代理开发
  16. Java第一次实训课的作业
  17. Learning-Python【10】:函数初识
  18. Linux环境下使用n更新node版本失败的原因与解决
  19. PHP excel reader , excel时间转成php时间格式
  20. UVA - 10635 Prince and Princess LCS转LIS

热门文章

  1. 【洛谷P3600】 随机数生成器
  2. 【学习笔记 边分树】【uoj400】【CTSC2018】暴力写挂
  3. CF 991
  4. javascript:location.reload()和location.replace()的区别,及对图片缓存的影响。
  5. 描述符__get__(),__set__(),__delete__()(三十七)
  6. ADO.NET入门教程(五) 细说数据库连接池
  7. Spring(2)
  8. springmvc的controller中使用@Transactional无效
  9. RocketMQ在windows环境下的安装
  10. n的阶乘-编程2.md