private static async void CreatePersonAsync(string personName, PersonGroupInfo group) { newPersonName = string.Empty; for (int i = 0; i < group.People?.Length; i++) { if (group.People[i].name == personName) { Debug.LogFormat("{0} already exists", personName); return; } } await Person.CreatePersonAsync(personName, group.personGroupId); GetPeopleInGroupAsync(); Directory.CreateDirectory(Directory.GetParent(Application.dataPath) + "/FaceAPI/" + personName); }
private void PersonGUI(PersonGroupInfo group) { if (group.People == null || group.People.Length == 0) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(32f); EditorGUILayout.LabelField("No People in group"); EditorGUILayout.EndHorizontal(); } if (group.People != null) { for (int i = 0; i < group.People.Length; i++) { var person = group.People[i]; string faceDirectory = Directory.GetParent(Application.dataPath) + "/FaceAPI/" + person.name; EditorGUILayout.BeginHorizontal(); GUILayout.Space(32f); EditorGUILayout.LabelField(group.People[i].name, GUILayout.Width(128)); GUILayout.FlexibleSpace(); if (GUILayout.Button("Photos Folder")) { Process.Start(faceDirectory); } GUI.enabled = !uploadingImages && !isTraining; if (GUILayout.Button("Upload")) { UploadPhotosAsync(person, group, faceDirectory); } if (GUILayout.Button(new GUIContent("X", "Delete Person"), GUILayout.Width(18))) { DeletePersonAsync(group.personGroupId, person.personId); } GUI.enabled = true; EditorGUILayout.EndHorizontal(); } } }
public async static Task <PersonGroupResult> CreatePersonGroupAsync(string displayName) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Common.CoreConstants.FaceApiSubscriptionKey); string groupId = displayName.Replace(" ", "").ToLower(); PersonGroupInfo groupInfo = new PersonGroupInfo() { name = displayName, userData = "", }; var payload = new HttpStringContent(JsonConvert.SerializeObject(groupInfo)); payload.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json"); var response = await client.PutAsync(new Uri($"{CogsExplorer.Common.CoreConstants.CognitiveServicesBaseUrl}/face/v1.0/persongroups/{groupId}"), payload); PersonGroupResult personGroupResult = null; try { var results = await response.Content.ReadAsStringAsync(); personGroupResult = new PersonGroupResult() { personGroupId = groupId, name = displayName, userData = "", }; } catch (Exception ex) { } return(personGroupResult); }
private static async void TrainPersonGroupAsync(PersonGroupInfo group) { await PersonGroup.TrainGroupAsync(group.personGroupId); isTraining = true; while (isTraining) { var status = await PersonGroup.GetTrainingStatusAsync(group.personGroupId); group.TrainingStatus = status.Value; for (int i = 0; i < Window.currentGroups.Length; i++) { if (Window.currentGroups[i].personGroupId == group.personGroupId) { Window.currentGroups[i].TrainingStatus = group.TrainingStatus; break; } } switch (group.TrainingStatus.StatusType) { case StatusType.succeeded: isTraining = false; break; case StatusType.failed: isTraining = false; break; case StatusType.running: await Task.Delay(1000); break; } } }
private static async void UploadPhotosAsync(PersonInfo person, PersonGroupInfo group, string faceDirectory) { uploadingImages = true; for (int i = 0; i < Window.currentGroups.Length; i++) { if (Window.currentGroups[i].personGroupId == group.personGroupId) { Window.currentGroups[i].TrainingStatus = new TrainingStatus(); break; } } var images = Directory.GetFiles(faceDirectory); for (int i = 0; i < images.Length; i++) { await Person.CreateFaceAsync(person.personId, group.personGroupId, File.ReadAllBytes(images[i])); await Task.Delay(1000); } uploadingImages = false; }
private static async void DeletePersonGroupAsync(PersonGroupInfo personGroup) { await PersonGroup.DeleteGroupAsync(personGroup.personGroupId); GetPersonGroupsAsync(); }