private void Form1_Load(object sender, EventArgs e) { //获取摄像头参数 _CameraPara = Common.CameraPara.GetPara(); if (!_CameraPara.HasVideoDevice) { MessageBox.Show("没有检测到摄像头"); this.Close(); return; } this.VideoPlayer.VideoSource = _CameraPara.VideoSource; this.VideoPlayer.Start(); _RateH = 1.0F * this.VideoPlayer.Height / this._CameraPara.FrameHeight; _RateW = 1.0F * this.VideoPlayer.Width / this._CameraPara.FrameWidth; _FontId = new Font(this.Font.FontFamily, this.Font.Size / System.Math.Max(_RateH, _RateW)); _PenFace = new Pen(Color.Yellow, 1); _PenFace.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom; _PenFace.DashPattern = new float[] { 5, 5 }; string msg = ""; bool flag = ArcFace.Api.Init(out msg, AppId, DKey, RKey); if (!flag) { MessageBox.Show(msg); this.Close(); return; } Task.Factory.StartNew(() => { Task.Delay(1000).Wait(); while (!_CancellationTokenSource.IsCancellationRequested) { #region 200毫秒左右 try { MatchFrame(); } catch { } #endregion } }, _CancellationTokenSource.Token); }
private void Main_Load(object sender, EventArgs e) { if (!Directory.Exists(FeaturePath)) { Directory.CreateDirectory(FeaturePath); } foreach (var file in Directory.GetFiles(FeaturePath)) { var info = new FileInfo(file); var data = File.ReadAllBytes(file); var faceModel = new Face.FaceModel { lFeatureSize = data.Length, pbFeature = Marshal.AllocHGlobal(data.Length) }; Marshal.Copy(data, 0, faceModel.pbFeature, data.Length); _FaceLib.Items.Add(new Face.FaceLib.Item() { OrderId = 0, ID = info.Name.Replace(info.Extension, ""), FaceModel = faceModel }); } _CameraPara = new CameraPara(); if (!_CameraPara.HasVideoDevice) { MessageBox.Show("没有检测到摄像头"); this.Close(); return; } this.VideoPlayer.VideoSource = _CameraPara.VideoSource; this.VideoPlayer.Start(); _RateH = 1.0 * this.VideoPlayer.Height / this._CameraPara.FrameHeight; _RateW = 1.0 * this.VideoPlayer.Width / this._CameraPara.FrameWidth; //var initResult = (Face.ErrorCode)Face.Trace.Init(FaceAppId, FaceTraceKey, _FaceTraceBuffer, BufferSize, out _FaceTraceEnginer, (int)Face.OrientPriority.Only0, 16, 1); //if (initResult != Face.ErrorCode.Ok) //{ // MessageBox.Show("初始化人脸跟踪引擎失败,错误代码为:" + initResult); // this.Close(); // return; //} var initResult = (Face.ErrorCode)Face.Detect.Init(FaceAppId, FaceDetectKey, _FaceDetectBuffer, BufferSize, out _FaceDetectEnginer, (int)Face.OrientPriority.Only0, 16, 1); if (initResult != Face.ErrorCode.Ok) { MessageBox.Show("初始化人脸检测引擎失败,错误代码为:" + initResult); this.Close(); return; } initResult = (Face.ErrorCode)Face.Match.Init(FaceAppId, FaceMatchKey, _FaceMatchBuffer, BufferSize, out _FaceMatchEngine); if (initResult != Face.ErrorCode.Ok) { MessageBox.Show("初始化人脸比对引擎失败,错误代码为:" + initResult); this.Close(); return; } //initResult = (Face.ErrorCode)Face.Age.Init(FaceAppId, FaceAgeKey, _FaceAgeBuffer, BufferSize, out _FaceAgeEngine); //if (initResult != Face.ErrorCode.Ok) //{ // MessageBox.Show("初始化年龄识别引擎失败,错误代码为:" + initResult); // this.Close(); // return; //} initResult = (Face.ErrorCode)Face.Gender.Init(FaceAppId, FaceGenderKey, _FaceGenderBuffer, BufferSize, out _FaceGenderEngine); if (initResult != Face.ErrorCode.Ok) { MessageBox.Show("初始化性别识别引擎失败,错误代码为:" + initResult); this.Close(); return; } Task.Delay(1000).Wait(); Task.Factory.StartNew(() => { Task.Delay(1000).Wait(); while (!_CancellationTokenSource.IsCancellationRequested) { #region 200毫秒左右 MatchFrame(); #endregion } }, _CancellationTokenSource.Token); }