/// <summary> /// 车牌OCR识别,根据用户上传的图像,返回识别出的图片中的车牌号。 /// </summary> /// <param name="url">图片的url</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string plateocrurl(string url) { string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/ocrapi/plateocr"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"url\":\"{1}\""; pars = string.Format(pars, Conf.Instance().APPID, url); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// 五官定位 faceshape /// </summary> /// <param name="image_path">的路径</param> /// <param name="isbigface">是否大脸模式 0表示检测所有人脸, 1表示只检测照片最大人脸 适合单人照模式</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string faceshape(string image_path, int isbigface = 1) { string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/api/faceshape"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"image\":\"{1}\",\"mode\":{2}"; pars = string.Format(pars, Conf.Instance().APPID, Utility.ImgBase64(image_path), isbigface); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// 设置信息 setinfo /// </summary> /// <param name="person_id">待设置的个体身份id</param> /// <param name="person_name">新设置的个体名字</param> /// <param name="person_tag">新设置的人备注信息</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string setinfo(string person_id, string person_name, string person_tag) { string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/api/setinfo"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"person_name\":\"{1}\",\"person_id\":\"{2}\",\"tag\":\"{3}\""; pars = string.Format(pars, Conf.Instance().APPID, person_name, person_id, person_tag); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// 名片OCR识别 /// </summary> /// <param name="image_path">图片路径</param> /// <param name="retimage ">是否需要返回处理结果图,true 返回,false 不返回</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string namecardocr(string image_path, bool retimage) { string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/ocrapi/namecardocr"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"image\":\"{1}\",\"retimage\":\"{2}\""; pars = string.Format(pars, Conf.Instance().APPID, Utility.ImgBase64(image_path), retimage); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// 删除人脸 delface /// </summary> /// <param name="person_id">待删除人脸的个体身份id</param> /// <param name="face_ids">删除人脸id的列表</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string delface(string person_id, List <string> face_ids) { string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/api/delface"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"person_id\":\"{1}\",\"face_ids\":{2}"; pars = string.Format(pars, Conf.Instance().APPID, person_id, JsonHelp <string[]> .ToJsonString(face_ids.ToArray())); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// 增加人脸 addface /// </summary> /// <param name="person_id">新增人脸的个体身份id</param> /// <param name="url_arr">待增加的包含人脸的url,可加入多个(包体大小<2m)</param> /// <param name="facetag">人脸备注信息,用户自解释字段</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string addfaceurl(string person_id, List <string> url_arr, string facetag = "") { List <string> faceImgBase64List = new List <string>(); string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/api/addface"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"urls\":{1},\"person_id\":\"{2}\",\"tag\":\"{3}\""; pars = string.Format(pars, Conf.Instance().APPID, JsonHelp <string[]> .ToJsonString(url_arr.ToArray()), person_id, facetag); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// 个体创建 newpersonurl /// </summary> /// <param name="url">图片的url</param> /// <param name="person_id">新建的个体id,用户指定,需要保证app_id下的唯一性</param> /// <param name="person_name">姓名</param> /// <param name="group_ids">新建的个体存放的组id,可以指定多个组id,用户指定(组默认创建)</param> /// <param name="person_tag">备注信息,用户自解释字段</param> /// <returns>返回的结果,JSON字符串,字段参见API文档</returns> public static string newpersonurl(string url, string person_id, string person_name, List <string> group_ids, string person_tag) { string expired = Utility.UnixTime(EXPIRED_SECONDS); string methodName = "youtu/api/newperson"; StringBuilder postData = new StringBuilder(); string pars = "\"app_id\":\"{0}\",\"url\":\"{1}\",\"group_ids\":{2},\"person_id\":\"{3}\",\"person_name\":\"{4}\",\"tag\":\"{5}\""; pars = string.Format(pars, Conf.Instance().APPID, url, JsonHelp <string[]> .ToJsonString(group_ids.ToArray()), person_id, person_name, person_tag); postData.Append("{"); postData.Append(pars); postData.Append("}"); string result = Http.HttpPost(methodName, postData.ToString(), Auth.appSign(expired, Conf.Instance().USER_ID)); return(result); }
/// <summary> /// send http request with POST method /// </summary> /// <param name="methodName">请求的接口名称</param> /// <param name="postData">请求数据</param> /// <param name="authorization">签名</param> /// <returns></returns> public static string HttpPost(string methodName, string postData, string authorization) { string ret = string.Empty; try { byte[] byteArray = Encoding.UTF8.GetBytes(postData); //转化为UTF8 HttpWebRequest webReq = null; if (Conf.Instance().END_POINT.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); webReq = WebRequest.Create((Conf.Instance().END_POINT + methodName)) as HttpWebRequest; webReq.ProtocolVersion = HttpVersion.Version11; } else { webReq = (HttpWebRequest)WebRequest.Create(new Uri(Conf.Instance().END_POINT + methodName)); } webReq.Method = "POST"; webReq.ContentType = "text/json"; webReq.Headers.Add(HttpRequestHeader.Authorization, authorization); webReq.ServicePoint.Expect100Continue = false; //webReq.Expect = "100-Continue"; webReq.ContentLength = byteArray.Length; Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length);//写入参数 newStream.Close(); HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); ret = sr.ReadToEnd(); sr.Close(); response.Close(); newStream.Close(); } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { var response = ex.Response as HttpWebResponse; if (response != null) { int errorcode = (int)response.StatusCode; ret = Youtu.statusText(errorcode); } else { // no http status code available } } else { // no http status code available } } catch (Exception ex) { Console.WriteLine(ex.Message); } return(ret); }
/// <summary> /// 签名 /// </summary> /// <param name="expired">过期时间</param> /// <param name="userid">暂时不用</param> /// <returns>签名</returns> public static string appSign(string expired, string userid) { if (string.IsNullOrEmpty(Conf.Instance().SECRET_ID) || string.IsNullOrEmpty(Conf.Instance().SECRET_KEY)) { return(AUTH_SECRET_ID_KEY_ERROR); } string time = Utility.UnixTime(); string plainText = SetOrignal(Conf.Instance().USER_ID, Conf.Instance().APPID, Conf.Instance().SECRET_ID, time, expired); byte[] signByteArrary = Utility.JoinByteArr(HmacSha1Sign(plainText, Conf.Instance().SECRET_KEY), Utility.StrToByteArr(plainText)); return(Convert.ToBase64String(signByteArrary)); }