in Kiosk/Views/RealTimeDemo.xaml.cs [273:342]
private void UpdateDemographics(ImageAnalyzer img)
{
if (this.lastSimilarPersistedFaceSample != null)
{
bool demographicsChanged = false;
// Update the Visitor collection (either add new entry or update existing)
foreach (var item in this.lastSimilarPersistedFaceSample)
{
Visitor visitor;
Guid persistedFaceId = item.SimilarPersistedFace.PersistedFaceId.GetValueOrDefault();
if (this.visitors.TryGetValue(persistedFaceId, out visitor))
{
visitor.Count++;
}
else
{
demographicsChanged = true;
visitor = new Visitor { UniqueId = persistedFaceId, Count = 1 };
this.visitors.Add(visitor.UniqueId, visitor);
this.demographics.Visitors.Add(visitor);
// Update the demographics stats. We only do it for new visitors to avoid double counting.
AgeDistribution genderBasedAgeDistribution = null;
if (item.Face.FaceAttributes.Gender == Gender.Male)
{
this.demographics.OverallMaleCount++;
genderBasedAgeDistribution = this.demographics.AgeGenderDistribution.MaleDistribution;
}
else
{
this.demographics.OverallFemaleCount++;
genderBasedAgeDistribution = this.demographics.AgeGenderDistribution.FemaleDistribution;
}
if (item.Face.FaceAttributes.Age < 16)
{
genderBasedAgeDistribution.Age0To15++;
}
else if (item.Face.FaceAttributes.Age < 20)
{
genderBasedAgeDistribution.Age16To19++;
}
else if (item.Face.FaceAttributes.Age < 30)
{
genderBasedAgeDistribution.Age20s++;
}
else if (item.Face.FaceAttributes.Age < 40)
{
genderBasedAgeDistribution.Age30s++;
}
else if (item.Face.FaceAttributes.Age < 50)
{
genderBasedAgeDistribution.Age40s++;
}
else
{
genderBasedAgeDistribution.Age50sAndOlder++;
}
}
}
if (demographicsChanged)
{
this.ageGenderDistributionControl.UpdateData(this.demographics);
}
this.overallStatsControl.UpdateData(this.demographics);
}
}