¶Ô±ÈÐÂÎļþ |
| | |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Net; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEAWCS_Common |
| | | { |
| | | public class BaiDuFaceHelper |
| | | { |
| | | /// <summary> |
| | | /// è·åAccessToken |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string GetAccessToken() |
| | | { |
| | | string url = string.Format("https://aip.baidubce.com/oauth/2.0/token?client_id={0}&client_secret={1}", "TqFQHXSNt6Z7cPQ4vDBfBNjq", "0cli6I6s8JFz3qM1Czi5ciRpDqrJuVvm"); |
| | | string returnStr = BDWebRequest(url, "", "POST"); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("ç¾åº¦äººè¸è¯å«è¿åï¼" + returnStr); |
| | | BDToken token = JsonConvert.DeserializeObject<BDToken>(returnStr); |
| | | token.getdate = DateTime.Now.ToString(); |
| | | |
| | | return token.access_token; |
| | | } |
| | | |
| | | public static string BDWebRequest(string url, string data, string method) |
| | | { |
| | | try |
| | | { |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); |
| | | request.Method = string.IsNullOrEmpty(method) ? "POST" : method.ToUpper(); |
| | | request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"; |
| | | request.ServicePoint.Expect100Continue = false; |
| | | request.Timeout = 1000 * 60; |
| | | request.ContentType = "application/x-www-form-urlencoded"; |
| | | if (!string.IsNullOrEmpty(method) && method.ToUpper() == "POST" && !string.IsNullOrEmpty(data)) |
| | | { |
| | | byte[] byteArray = Encoding.UTF8.GetBytes(data); |
| | | request.ContentLength = byteArray.Length; |
| | | using (Stream myRequestStream = request.GetRequestStream()) |
| | | { |
| | | myRequestStream.Write(byteArray, 0, byteArray.Length); |
| | | } |
| | | } |
| | | HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse(); |
| | | using (Stream response = myHttpWebResponse.GetResponseStream()) |
| | | { |
| | | using (StreamReader reader = new StreamReader(response, Encoding.UTF8)) |
| | | { |
| | | return reader.ReadToEnd(); |
| | | } |
| | | } |
| | | } |
| | | catch { return ""; } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// äººè¸æ£æµä¸å±æ§åæ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string FaceDetect(string path) |
| | | { |
| | | string token = GetAccessToken(); |
| | | string host = "https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=" + token; |
| | | var imgbase64 = GetFileContentAsBase64(path); |
| | | Encoding encoding = Encoding.Default; |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"image\":\""+ imgbase64 + "\",\"image_type\":\"BASE64\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | | |
| | | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); |
| | | StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); |
| | | string result = reader.ReadToEnd(); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("äººè¸æ£æµä¸å±æ§åæï¼" + result); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åå»ºç¨æ·äººè¸è¯å«ç» |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string GroupAdd(string group) |
| | | { |
| | | string token = GetAccessToken(); |
| | | string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add?access_token=" + token; |
| | | Encoding encoding = Encoding.Default; |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "post"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"group_id\":\""+ group + "\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); |
| | | StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); |
| | | string result = reader.ReadToEnd(); |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("åå»ºç¨æ·ç»ï¼" + result); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæä»¶base64ç¼ç |
| | | /// </summary> |
| | | /// <param name="path">æä»¶è·¯å¾</param> |
| | | /// <returns>base64ç¼ç ä¿¡æ¯ï¼ä¸å¸¦æä»¶å¤´</returns> |
| | | public static string GetFileContentAsBase64(string path) |
| | | { |
| | | using (FileStream filestream = new FileStream(path, FileMode.Open)) |
| | | { |
| | | byte[] arr = new byte[filestream.Length]; |
| | | filestream.Read(arr, 0, (int)filestream.Length); |
| | | string base64 = Convert.ToBase64String(arr); |
| | | return base64; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// äººè¸æ³¨å |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static CreateUserResult AddUser(BDUserInfo info) |
| | | { |
| | | string token = GetAccessToken(); |
| | | var imgbase64 = GetFileContentAsBase64(info.ImgPath); |
| | | string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=" + token; |
| | | Encoding encoding = Encoding.Default; |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"image\":\"" + imgbase64 + "\",\"image_type\":\"BASE64\",\"group_id\":\"" + info.group_id + "\",\"user_id\":\"" + info.user_id + "\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); |
| | | StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); |
| | | string result = reader.ReadToEnd(); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("äººè¸æ³¨åï¼" + result); |
| | | CreateUserResult res= JsonConvert.DeserializeObject<CreateUserResult>(result);//éè¦å°log_idåface_tokenä¿åå°ç¨æ·è¡¨ä¸ï¼å¨äººè¸å é¤ä¸éè¦ç¨å° |
| | | |
| | | return res; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 人è¸å é¤ï¼å é¤ç¨æ·çæä¸å¼ 人è¸ï¼å¦æè¯¥ç¨æ·åªæä¸å¼ 人è¸å¾çï¼ååæ¶å é¤ç¨æ·ãï¼ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string DeleteUserImg(DeleteUserImg info) |
| | | { |
| | | string token = GetAccessToken(); |
| | | string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/delete?access_token=" + token; |
| | | Encoding encoding = Encoding.Default; |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"face_token\":\"" + info.face_token + "\",\"log_id\":\"" + info.log_id + "\",\"group_id\":\"" + info.group_id + "\",\"user_id\":\"" + info.user_id + "\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); |
| | | StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); |
| | | string result = reader.ReadToEnd(); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("人è¸å é¤ï¼" + result); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç¨æ·å é¤ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string DeleteUser(DeleteUserImg info) |
| | | { |
| | | string token = GetAccessToken(); |
| | | string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/delete?access_token=" + token; |
| | | Encoding encoding = Encoding.Default; |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"group_id\":\"" + info.group_id + "\",\"user_id\":\"" + info.user_id + "\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); |
| | | StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); |
| | | string result = reader.ReadToEnd(); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("ç¨æ·å é¤ï¼" + result); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// äººè¸æç´¢ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static SearchResult FaceSearch(string path) |
| | | { |
| | | string token = GetAccessToken(); |
| | | var imgbase64 = GetFileContentAsBase64(path); |
| | | |
| | | string host = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete?access_token=" + token; |
| | | Encoding encoding = Encoding.Default; |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"image\":\"" + imgbase64 + "\",\"image_type\":\"BASE64\",\"group_id_list\":\"1\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); |
| | | StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); |
| | | string result = reader.ReadToEnd(); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("äººè¸æç´¢ï¼" + result); |
| | | SearchResult searchResult = JsonConvert.DeserializeObject<SearchResult>(result); |
| | | |
| | | return searchResult; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// tokenè·åä¿¡æ¯ |
| | | /// </summary> |
| | | public class BDToken |
| | | { |
| | | /// <summary> |
| | | /// 认è¯token |
| | | /// </summary> |
| | | public string access_token { get; set; } |
| | | /// <summary> |
| | | /// Access Tokençæææ(ç§ä¸ºåä½ï¼æææ30天) |
| | | /// </summary> |
| | | public int expires_in { get; set; } |
| | | /// <summary> |
| | | /// è·åæ¶é´ |
| | | /// </summary> |
| | | public string getdate { get; set; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// äººè¸æ³¨åä¿¡æ¯ |
| | | /// </summary> |
| | | public class BDUserInfo |
| | | { |
| | | /// <summary> |
| | | /// å¾çè·¯å¾(æ»æ°æ®å¤§å°åºå°äº10Mï¼å辨çåºå°äº1920*1080) |
| | | /// </summary> |
| | | public string ImgPath { get; set; } |
| | | /// <summary> |
| | | /// ç¨æ·ç»idï¼æ è¯ä¸ç»ç¨æ·ï¼ç±æ°åã忝ãä¸åçº¿ç»æï¼ï¼é¿åº¦éå¶48B |
| | | /// </summary> |
| | | public int group_id { get; set; } |
| | | /// <summary> |
| | | /// ç¨æ·idï¼ç±æ°åã忝ãä¸åçº¿ç»æï¼ï¼å¯¹åºç³»ç»è´¦å· |
| | | /// </summary> |
| | | public string user_id { get; set; } |
| | | } |
| | | /// <summary> |
| | | /// äººè¸æ³¨åæ¶è¿å对象 |
| | | /// </summary> |
| | | public class CreateUserResult |
| | | { |
| | | /// <summary> |
| | | /// æ£ç´¢æåè¿å0 |
| | | /// </summary> |
| | | public int error_code { get; set; } |
| | | public string error_msg { get; set; } |
| | | /// <summary> |
| | | /// è¯·æ±æ è¯ç ï¼éæºæ°ï¼å¯ä¸ |
| | | /// </summary> |
| | | public string log_id { get; set; } |
| | | public CreateUser result { get; set; } |
| | | } |
| | | public class CreateUser |
| | | { |
| | | /// <summary> |
| | | /// 人è¸å¾ççå¯ä¸æ è¯ |
| | | /// </summary> |
| | | public string face_token { get; set; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// äººè¸æç´¢æ¶è¿åç对象 |
| | | /// </summary> |
| | | public class SearchResult |
| | | { |
| | | /// <summary> |
| | | /// æ£ç´¢æåè¿å0 |
| | | /// </summary> |
| | | public int error_code { get; set; } |
| | | public string error_msg { get; set;} |
| | | public UserResult result { get; set;} |
| | | |
| | | } |
| | | public class UserResult |
| | | { |
| | | public string face_token { get; set; } |
| | | public List<User_List> user_list { get; set;} |
| | | } |
| | | public class User_List |
| | | { |
| | | public string user_id { get; set; } |
| | | /// <summary> |
| | | /// ç¨æ·çå¹é
å¾å,80å以ä¸å¯ä»¥å¤æä¸ºåä¸äºº |
| | | /// </summary> |
| | | public string score { get; set;} |
| | | } |
| | | /// <summary> |
| | | /// 人è¸å é¤çå
¥å对象ï¼åªå 餿ä¸å¼ å¾çï¼å¦æè¯¥ç¨æ·åªæä¸å¼ å¾çï¼é£è¯¥ç¨æ·æ´ä½å é¤ |
| | | /// </summary> |
| | | public class DeleteUserImg |
| | | { |
| | | /// <summary> |
| | | /// è¯·æ±æ è¯ç ï¼éæºæ°ï¼å¯ä¸ |
| | | /// </summary> |
| | | public int log_id { get; set;} |
| | | /// <summary> |
| | | /// ç¨æ·idï¼ç±æ°åã忝ãä¸åçº¿ç»æï¼ï¼é¿åº¦éå¶48B |
| | | /// </summary> |
| | | public string user_id { get; set;} |
| | | /// <summary> |
| | | /// ç¨æ·ç»idï¼ç±æ°åã忝ãä¸åçº¿ç»æï¼ é¿åº¦éå¶48Bï¼å 餿å®group_idä¸çuser_idä¿¡æ¯ |
| | | /// </summary> |
| | | public string group_id { get; set;} |
| | | /// <summary> |
| | | /// éè¦å é¤ç人è¸å¾çtokenï¼ï¼ç±æ°åã忝ãä¸åçº¿ç»æï¼é¿åº¦éå¶64B |
| | | /// </summary> |
| | | public string face_token { get; set;} |
| | | } |
| | | } |