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); } }); } }