Пример #1
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);
                            }
                        }
                    }
                }
            }
        }
Пример #2
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)
                    {
                        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);
        }
Пример #5
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);
                            }
                        }
                    }

                }

            }
        }
Пример #6
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)
                    {
                        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);
                            }

                        }
                    }

                }

            }
        }