in Kiosk/Views/DigitalAssetManagement/ImageInsightsViewModel.cs [548:647]
IEnumerable<string> GetFaceAttributesFlags(FaceInsights[] faces)
{
var result = new List<string>();
var threshhold = .49;
if (faces != null)
{
foreach (var face in faces)
{
//accessories
foreach (var accessory in face.FaceAttributes.Accessories?.Where(i => i.Confidence >= threshhold).Select(i => i.Type.ToString()) ?? Array.Empty<string>())
{
result.Add(accessory);
}
//Beard
if ((face.FaceAttributes.FacialHair?.Beard ?? 0) >= threshhold)
{
result.Add("Beard");
}
//Moustache
if ((face.FaceAttributes.FacialHair?.Moustache ?? 0) >= threshhold)
{
result.Add("Moustache");
}
//Sideburns
if ((face.FaceAttributes.FacialHair?.Sideburns ?? 0) >= threshhold)
{
result.Add("Sideburns");
}
//Bald
if ((face.FaceAttributes.Hair?.Bald ?? 0) >= threshhold)
{
result.Add("Bald");
}
//HairColor
var hairColor = (face.FaceAttributes.Hair?.HairColor ?? Array.Empty<HairColor>()).Where(i => i.Color != HairColorType.Unknown && i.Color != HairColorType.Other).OrderByDescending(i => i.Confidence).Select(i => i.Color.ToString()).FirstOrDefault();
if (hairColor != null)
{
result.Add(hairColor + " Hair");
}
//Hair invisible
if (face.FaceAttributes.Hair?.Invisible ?? false)
{
result.Add("Hair isn't visible");
}
//Eye Makup
if (face.FaceAttributes.Makeup?.EyeMakeup ?? false)
{
result.Add("Eye Makup");
}
//Lip Makup
if (face.FaceAttributes.Makeup?.LipMakeup ?? false)
{
result.Add("Lip Makup");
}
//glasses
var glasses = face.FaceAttributes.Glasses.GetValueOrDefault(Face.Models.GlassesType.NoGlasses);
if (glasses != GlassesType.NoGlasses)
{
switch (glasses)
{
case Face.Models.GlassesType.ReadingGlasses:
result.Add("Reading Glasses");
break;
case Face.Models.GlassesType.Sunglasses:
result.Add("Sunglasses");
break;
case Face.Models.GlassesType.SwimmingGoggles:
result.Add("Swimming Goggles");
break;
default:
result.Add(glasses.ToString());
break;
}
}
//head pose
if (face.FaceAttributes.HeadPose.Pitch.Between(-10, 10) && face.FaceAttributes.HeadPose.Roll.Between(-10, 10) && face.FaceAttributes.HeadPose.Yaw.Between(-10, 10))
{
result.Add("Facing Camera");
}
if (!face.FaceAttributes.HeadPose.Yaw.Between(-37, 37))
{
result.Add("Profile");
}
//Occlusion
if (face.FaceAttributes.Occlusion?.EyeOccluded ?? false)
{
result.Add("Eye isn't visible");
}
if (face.FaceAttributes.Occlusion?.ForeheadOccluded ?? false)
{
result.Add("Forehead isn't visible");
}
if (face.FaceAttributes.Occlusion?.MouthOccluded ?? false)
{
result.Add("Mouth isn't visible");
}
}
}
return result.Distinct();
}