private AppBody ResisterFace(JObject _appInfo, AppBody _appbody, byte[] _faceImageBuffer, JToken _faceRectangle) { var storageAccount = (_appInfo["StorageAccount"] ?? "").ToString(); var storageKey = (_appInfo["StorageKey"] ?? "").ToString(); var storageContainer = (_appInfo["StorageContainer"] ?? "").ToString(); var faceApiKey = (_appInfo["FaceApiKey"] ?? "").ToString(); var facePerson = new HwsMicrosoftFaceApi.Person.Client(faceApiKey); var personAddResult = facePerson.Add(_faceImageBuffer, _appbody.PersonGroupId, _appbody.PersonId); if (personAddResult.apiResult.IsSuccessStatusCode) { _appbody.PersonInfos[0].PersonId = _appbody.PersonId; _appbody.PersonInfos[0].PersonName = _appbody.PersonName; _appbody.PersonInfos[0].PersonNameYomi = _appbody.PersonNameYomi; CreateOrUpdatePersonInfo(_appbody); var addFaceResult = JsonConvert.DeserializeObject <JObject>(personAddResult.apiResult.Result); var persistedFaceId = (addFaceResult["persistedFaceId"] ?? "").ToString(); var faceFileName = _appbody.PersonId + "_" + persistedFaceId; var personGroup = new HwsMicrosoftFaceApi.PersonGroup.Client(faceApiKey); personGroup.Train(_appbody.PersonGroupId); } return(_appbody); }
private RbMessage DeleteFace(RbHeader rbh, JObject appInfo, JObject jo_input) { var storageAccount = (appInfo["StorageAccount"] ?? "").ToString(); var storageKey = (appInfo["StorageKey"] ?? "").ToString(); var storageContainer = (appInfo["StorageContainer"] ?? "").ToString(); var faceApiKey = (appInfo["FaceApiKey"] ?? "").ToString(); AppBody appbody = new AppBody(); appbody.PersonId = (jo_input["PersonId"] ?? "").ToString(); appbody.PersonGroupId = (jo_input["PersonGroupId"] ?? "").ToString(); var facePerson = new HwsMicrosoftFaceApi.Person.Client(faceApiKey); var personDeleteResult = facePerson.Delete(appbody.PersonGroupId, appbody.PersonId); if (personDeleteResult.apiResult.IsSuccessStatusCode) { var personGroup = new HwsMicrosoftFaceApi.PersonGroup.Client(faceApiKey); personGroup.Train(appbody.PersonGroupId); PersonInfoModel.Find(appbody.PersonId).Delete(); } else { appbody.Code = ERROR_CODE; } return(GetRbMessage(rbh, appbody)); }
private RbMessage ResisterPersonFace(RbHeader _rbh, JObject _appInfo, JObject _rbBody) { var faceApiKey = (_appInfo["FaceApiKey"] ?? "").ToString(); var facialHairConfidence = (double)_appInfo["FacialHairConfidence"]; var appbody = new AppBody(); appbody.PersonName = (_rbBody["PersonName"] ?? "").ToString(); appbody.PersonNameYomi = (_rbBody["PersonNameYomi"] ?? "").ToString(); appbody.PersonGroupId = (_rbBody["PersonGroupId"] ?? "").ToString(); appbody.PersonId = (_rbBody["PersonId"] ?? "").ToString(); var buffer = GetFaceImageData(_appInfo, _rbBody, appbody.PersonGroupId, _rbh); var faceDetection = new Detection(FaceApiHttpClient, faceApiKey, 0.1); var faceDetectResult = faceDetection.DetectFace(buffer); if (faceDetectResult.apiResult.IsSuccessStatusCode) { appbody.PersonInfos = faceDetectResult.PersonInfos; var faceDetectJson = JsonConvert.DeserializeObject <JArray>(faceDetectResult.apiResult.Result); var faceRectangle = faceDetectJson[0]["faceRectangle"]; if (appbody.PersonId == "") { var fiResult = new HwsFaceCores.AppResult(); var fi = new Identification(FaceApiHttpClient, faceApiKey, facialHairConfidence); fiResult = fi.IdentifyFace(buffer, appbody.PersonInfos, appbody.PersonGroupId); appbody.PersonInfos = fiResult.PersonInfos; if (fiResult.apiResult.IsSuccessStatusCode) { if (appbody.PersonInfos.Count > 0) { RbMessage faceDuplicatedError = new RbMessage(); faceDuplicatedError.RbBody = JsonConvert.DeserializeObject <JObject>("{\"Code\": 406, \"Message\": \"顔情報は登録済みです.\", \"PersonInfos\": [], \"EmotionBodies\": []}"); _rbh.MessageId = "Res" + _rbh.MessageId; faceDuplicatedError.RbHeader = _rbh; return(faceDuplicatedError); } } var facePerson = new HwsMicrosoftFaceApi.Person.Client(faceApiKey); var personCreateResult = facePerson.Create(appbody.PersonGroupId, appbody.PersonName); if (personCreateResult.apiResult.IsSuccessStatusCode) { var result = (JObject)JsonConvert.DeserializeObject(personCreateResult.apiResult.Result); appbody.PersonId = (result["personId"] ?? "").ToString(); appbody = ResisterFace(_appInfo, appbody, buffer, faceRectangle); } } else { appbody = ResisterFace(_appInfo, appbody, buffer, faceRectangle); } } else { RbMessage noFaceDetectError = new RbMessage(); noFaceDetectError.RbBody = JsonConvert.DeserializeObject <JObject>("{\"Code\": 404, \"Message\": \"画像に人の顔が含まれていません.\", \"PersonInfos\": [], \"EmotionBodies\": []}"); _rbh.MessageId = "Res" + _rbh.MessageId; noFaceDetectError.RbHeader = _rbh; return(noFaceDetectError); } return(GetRbMessage(_rbh, appbody)); }