Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }