in FamilyNotes/UserDetection/FacialSimilarity.cs [225:270]
public static async Task<string> CheckForUserAsync(Uri UnidentifiedImage)
{
await _semaphore.WaitAsync();
var DynamicUserImageStorageFile = await StorageFile.GetFileFromApplicationUriAsync(UnidentifiedImage);
using(var DynamicUserImageFilestream = File.OpenRead(DynamicUserImageStorageFile.Path))
{
//Gets ID for face, which is good for 24 hours.
//Should we error check for multiple faces or no faces?
IList<DetectedFace> DetectedFaces;
await WaitOnTransactionCapAsync();
try
{
DetectedFaces = await _faceClient.Face.DetectWithStreamAsync(DynamicUserImageFilestream);
_transactionCount++;
}
catch (Exception)
{
_semaphore.Release();
return "";
}
Guid? DynamicID = null;
if (DetectedFaces.Count > 0)
DynamicID = DetectedFaces[0].FaceId;
//FaceList SavedUserFaces = null;
IList<SimilarFace> FacialSimilarityResults;
try
{
await WaitOnTransactionCapAsync();
FacialSimilarityResults = await _faceClient.Face.FindSimilarAsync(DynamicID.Value, _listKey);
_transactionCount++;
}
//catch
catch(Exception e)
{
_semaphore.Release();
return "";
}
_semaphore.Release();
return FacialSimilarityResults.Count == 0 ? "" : _userNames[FacialSimilarityResults[0].PersistedFaceId.Value];
}
}