public FaceCompare()
        {
            InitializeComponent();
            _accuracies = new[] {
                new Tuple <string, int>("低", 60),
                new Tuple <string, int>("中", 65),
                new Tuple <string, int>("高", 70),
            };

            _currentAccuracy = 65;

            this.searchFrom.EditValue = DateTime.Now.AddDays(-1);
            this.searchTo.EditValue   = DateTime.Now;

            this.targetPic.Paint     += new PaintEventHandler(targetPic_Paint);
            this.compareButton.Click += new EventHandler(compareButton_Click);

            if (_faceComparer == null)
            {
                _waitForm = new WaitDialogForm("初始化人脸特征库...", "请稍候");
                var modelPath      = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "model.txt");
                var classifierPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "haarcascade_frontalface_alt2.xml");
                var comparer       = FaceRecoWrapper.FromModel(modelPath, classifierPath);
                _faceComparer = comparer;
            }
        }
        public void InitializeAsync()
        {
            if (!_initialized)
            {
                EventAggregator.PublishIsBusyEvent(true);

                var worker = Task.Factory.StartNew(() =>
                {
                    var pois      = LoadPersonOfInterests();
                    _faceComparer =
                        FaceRecoWrapper.FromModel(
                            "model.txt",
                            "haarcascade_frontalface_alt2.xml");

                    _targets = pois;

                    this.Run     = true;
                    _initialized = true;
                });

                worker.ContinueWith(ant =>
                {
                    EventAggregator.PublishIsBusyEvent(false);
                    if (ant.Exception != null)
                    {
                        var msg = "人脸识别库初始化失败\r\n" + ant.Exception.InnerException.Message;
                        System.Windows.Forms.MessageBox.Show(msg);
                    }
                });
            }
        }
        public static FaceRecoWrapper CreateFaceComparer()
        {
            var modelPath      = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "model.txt");
            var classifierPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "haarcascade_frontalface_alt2.xml");
            var comparer       = FaceRecoWrapper.FromModel(modelPath, classifierPath);

            return(comparer);
        }
        public TargetPersonEditForm()
        {
            InitializeComponent();
            galleryControl1.Gallery.ItemCheckedChanged +=
                (s, e) => removeTarget.Enabled          = galleryControl1.Gallery.Groups[0].GetCheckedItems().Count > 0;


            _waitForm = new WaitDialogForm("正在初始化,请稍候...", "请稍候");
            if (_faceComparer == null)
            {
                _waitForm.Caption = "正在初始化人像比对模块...";
                var modelPath      = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "model.txt");
                var classifierPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "haarcascade_frontalface_alt2.xml");
                var comparer       = FaceRecoWrapper.FromModel(modelPath, classifierPath);
                _faceComparer = comparer;
            }

            _waitForm.Caption = "正在载入目标人像库...";
            LoadTargets();
        }
        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 InitializeAsync()
        {
            return;

            if (!_initialized)
            {
                EventAggregator.PublishIsBusyEvent(true);

                var worker = Task.Factory.StartNew(() =>
                                          {
                                              var pois = LoadPersonOfInterests();
                                              var modelPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "model.txt");
                                              var classifierPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "haarcascade_frontalface_alt2.xml");
                                              var comparer = FaceRecoWrapper.FromModel(modelPath, classifierPath);
                                              _faceComparer = comparer;

                                              Targets = pois;

                                              this.Run = true;
                                              _initialized = true;
                                          });

                worker.ContinueWith(ant =>
                                        {
                                            EventAggregator.PublishIsBusyEvent(false);
                                            if (ant.Exception != null)
                                            {
                                                var msg = "人脸识别库初始化失败\r\n" + ant.Exception.InnerException.Message;
                                                System.Windows.Forms.MessageBox.Show(msg);
                                            }

                                        });

            }
        }