private void NotifyListeners(Portrait portrait, IEnumerable <RepositoryCompareResult> matches) { foreach (var match in matches) { var args = new PersonOfInterestDetectionResult { Details = match.PersonInfo, Portrait = portrait, Similarity = match.Similarity }; if (EventAggregator != null) { EventAggregator.PublishFaceMatchEvent(args); } } }
public void AddSuspects(PersonOfInterestDetectionResult compareResult) { this.listPersons.Add(compareResult); var lvi = new ListViewItem(new string[] { "", //compareResult.Details.Name, //compareResult.Details.Gender.ToString(), //compareResult.Details.Age.ToString(), //compareResult.Details.ID, string.Empty }); lvi.Tag = compareResult; var added = this.suspectsList.Items.Add(lvi); suspectsList.SelectedItems.Clear(); suspectsList.EnsureVisible(this.suspectsList.Items.Count - 1); this.suspectsList.Items[this.suspectsList.Items.Count - 1].Selected = true; if (!Visible) { this.Show(Application.OpenForms[0]); } }
private void WorkerThread() { while (true) { _tokenSource.Token.ThrowIfCancellationRequested(); this.goSignal.WaitOne(); var portraits = this.Dequeue(); if (portraits == null) { continue; } if (portraits.Count == 0) { return; } foreach (var portrait in portraits) { var fs = new FaceSpecification(); var canCompare = _faceComparer.CalcFeature(portrait.GetIpl(), fs); if (canCompare) { var tgs = Targets; foreach (var targetPerson in tgs) { _tokenSource.Token.ThrowIfCancellationRequested(); var ts = new FaceSpecification(); ts.EyebrowRatio = targetPerson.EyebrowRatio; ts.EyebrowShape = targetPerson.EyeBrowShape; ts.Features = targetPerson.FeaturePoints; var compareResults = _faceComparer.CmpFace(fs, ts); if (compareResults > 70) { var fdr = new PersonOfInterestDetectionResult() { Similarity = compareResults, Suspect = portrait, Target = targetPerson }; Mediator.Instance.NotifyColleagues(fdr); } } } } } }