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); } } } } } }
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) { foreach (var targetPerson in _targets) { _tokenSource.Token.ThrowIfCancellationRequested(); var ts = new FaceSpecification(); ts.EyebrowRatio = targetPerson.EyebrowRatio; ts.EyebrowShape = targetPerson.EyebrowRatio; ts.Features = targetPerson.FeaturePoints; var compareResults = _faceComparer.CmpFace(fs, ts); if (compareResults > _sensitivity) { NotifyListeners(portrait, top); } } } } } }
public void Test() { // // TODO: Add test logic here // var comparer = FaceRecoWrapper.FromModel(@"model.txt", @"haarcascade_frontalface_alt2.xml"); var fpXue1 = new FaceSpecification(); var sucXue1 = comparer.CalcFeature(TestDataProvider.Data.GetImage1(), fpXue1); var fp1Clone = new FaceSpecification(); var bmp = TestDataProvider.Data.Face1OfXue.ToBitmap(); var bmpClone = OpenCvSharp.IplImage.FromBitmap(bmp); var suc2 = comparer.CalcFeature(TestDataProvider.Data.GetImage2(), fp1Clone); var similar = comparer.CmpFace(fpXue1, fp1Clone); Assert.IsTrue(similar == 100.0); //var fpXue2 = new FaceSpecification(); //var sucXue2 = comparer.CalcFeature(TestDataProvider.Data.Face2OfXue, fpXue2); //var simXue1Xue2 = comparer.CmpFace(fpXue1, fpXue2); //var fpDeng = new FaceSpecification(); //var sucDeng = comparer.CalcFeature(TestDataProvider.Data.FaceOfDengDong, fpDeng); ////var simXue1Deng = comparer.CmpFace(fp1, fpDeng); //var fpGirl = new FaceSpecification(); //var sucGirl = comparer.CalcFeature(TestDataProvider.Data.GetPortrait(), fpGirl); //var simXue1Girl = comparer.CmpFace(fpXue1, fpGirl); //var simXue2Girl = comparer.CmpFace(fpXue2, fpGirl); //var fpShen = new FaceSpecification(); //var sucShen = comparer.CalcFeature(TestDataProvider.Data.FaceOfShen, fpShen); //var simXue1Shen = comparer.CmpFace(fpXue1, fpShen); //Assert.IsTrue(simXue1Shen == 0); }
public void Test() { // // TODO: Add test logic here // var comparer = FaceRecoWrapper.FromModel(@"model.txt", @"haarcascade_frontalface_alt2.xml"); var fpXue1 = new FaceSpecification(); var sucXue1 = comparer.CalcFeature(TestDataProvider.Data.GetImage1(), fpXue1); var fp1Clone = new FaceSpecification(); var bmp = TestDataProvider.Data.Face1OfXue.ToBitmap(); var bmpClone = OpenCvSharp.IplImage.FromBitmap(bmp); var suc2 = comparer.CalcFeature( TestDataProvider.Data.GetImage2() , fp1Clone); var similar = comparer.CmpFace(fpXue1, fp1Clone); Assert.IsTrue(similar == 100.0); //var fpXue2 = new FaceSpecification(); //var sucXue2 = comparer.CalcFeature(TestDataProvider.Data.Face2OfXue, fpXue2); //var simXue1Xue2 = comparer.CmpFace(fpXue1, fpXue2); //var fpDeng = new FaceSpecification(); //var sucDeng = comparer.CalcFeature(TestDataProvider.Data.FaceOfDengDong, fpDeng); ////var simXue1Deng = comparer.CmpFace(fp1, fpDeng); //var fpGirl = new FaceSpecification(); //var sucGirl = comparer.CalcFeature(TestDataProvider.Data.GetPortrait(), fpGirl); //var simXue1Girl = comparer.CmpFace(fpXue1, fpGirl); //var simXue2Girl = comparer.CmpFace(fpXue2, fpGirl); //var fpShen = new FaceSpecification(); //var sucShen = comparer.CalcFeature(TestDataProvider.Data.FaceOfShen, fpShen); //var simXue1Shen = comparer.CmpFace(fpXue1, fpShen); //Assert.IsTrue(simXue1Shen == 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); } } } } } }
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) { foreach (var targetPerson in _targets) { _tokenSource.Token.ThrowIfCancellationRequested(); var ts = new FaceSpecification(); ts.EyebrowRatio = targetPerson.EyebrowRatio; ts.EyebrowShape = targetPerson.EyebrowRatio; ts.Features = targetPerson.FeaturePoints; var compareResults = _faceComparer.CmpFace(fs, ts); if (compareResults > _sensitivity) { NotifyListeners(portrait, top); } } } } } }