Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }