예제 #1
0
        /// <summary>
        /// 人脸识别结果展示
        /// </summary>
        /// <param name="faceResult"></param>
        void ShowFaceDetectResult(FaceDetectInfo faceResult)
        {
            txtLog.Clear();
            if (faceResult.ResultNum == 0)
            {
                AppendLogWarning("图像没有识别到人脸");
            }
            else
            {
                AppendLogWarning("识别到人脸:{0}个", faceResult.ResultNum);
                for (int i = 0; i < faceResult.ResultNum; i++)
                {
                    AppendLogWarning("-----------------------");
                    AppendLogWarning("第{0}个人脸信息(可信度:{1}):", i + 1, faceResult.Result[i].FaceProbability);
                    AppendLog("年龄:{0}", faceResult.Result[i].Age);
                    AppendLog("性别:{0}  (可信度:{1})", faceResult.Result[i].Gender == "male" ? "男" : "女", faceResult.Result[i].GenderProbability);
                    AppendLog("颜值:{0}", faceResult.Result[i].Beauty);
                    AppendLog("表情:{0}", faceResult.Result[i].Expression == 0 ? "不笑" :
                              faceResult.Result[i].Expression == 1 ? "微笑" : "大笑");
                    AppendLog("是否带眼镜:{0}  (可信度:{1})", faceResult.Result[i].Glasses == 0 ? "无眼镜" : faceResult.Result[i].Glasses == 1 ? "普通眼镜" : "墨镜", faceResult.Result[i].GlassesProbability);

                    AppendLog("脸型:{0}", JsonConvert.SerializeObject(faceResult.Result[i].Faceshape));
                    //AppendLog(JsonConvert.SerializeObject(faceResult.Result));
                }
            }
        }
예제 #2
0
        public bool Start(string videoSrcUrl)
        {
            if (_bIsInitial)
            {
                return(true);
            }

            _bIsInitial = true;
            try
            {
                if (_vlcmedia != null)
                {
                    _vlcmedia.Events.StateChanged    -= Events_StateChanged;
                    _vlcmedia.Events.DurationChanged -= Events_DurationChanged;
                    _vlcmedia.Dispose();
                }
                _vlcmedia = Vlcfactory.CreateMedia <IMedia>(videoSrcUrl);
                _vlcmedia.Events.StateChanged    += Events_StateChanged;
                _vlcmedia.Events.DurationChanged += Events_DurationChanged;
                // 自定义显示
                _memRender = _vlcplayer.CustomRenderer;
                _memRender.SetFormat(new BitmapFormat(704, 576, ChromaType.RV24));
                _memRender.SetCallback(delegate(Bitmap frame)
                {
                    if ((frame != null) && (ReceiveFrameEvent != null))
                    {
                        if (_videoPlayState)
                        {
                            long currentDateTime = _currentTime;

                            Image imgd             = (Bitmap)frame.Clone();
                            FaceDetectInfo facedet = new FaceDetectInfo(imgd, currentDateTime);

                            //ReceiveFrameEvent(facedet);
                            Task.Factory.StartNew(() => ReceiveFrameEvent(facedet));
                        }
                        frame.Dispose();
                        frame = null;
                    }
                });

                _vlcplayer.Open(_vlcmedia);
                _vlcplayer.Play();
                _videoPlayState = true;

                return(true);
            }
            catch (Exception ex)
            {
                Log4NetHelper.Instance.Error("启动视频播放Capture方法出现错误:" + ex.Message);
                return(false);
            }
        }
예제 #3
0
        private void hikPlayer_FrameEventt(FaceDetectInfo faceimage)
        {
            if (faceimage == null || faceimage.Img == null)
            {
                return;
            }

            if (NoticeFrameEvent != null)
            {
                NoticeFrameEvent(faceimage);
            }
            else
            {
                faceimage.Dispose();
            }
        }
예제 #4
0
        private void NoticeFrameEvent(FaceDetectInfo detInfo)
        {
            Invoke((MethodInvoker) delegate()
            {
                Image oldImage = imageBox1.Image;

                if ((detInfo.Rects != null) && (detInfo.Rects.Count > 0))
                {
                    DrawRectangle(detInfo.Img, detInfo.Rects);
                }
                Bitmap newImage = new Bitmap(detInfo.Img, imageBox1.Size);
                imageBox1.Image = newImage;
                detInfo.Img.Dispose();

                if (oldImage != null)
                {
                    oldImage.Dispose();
                }
            });
        }
예제 #5
0
        private void api_FrameEvent(int frameId, Bitmap image, System.Drawing.Rectangle[] facerectArray)
        {
            if (image == null)
            {
                return;
            }

            if (NoticeFrameEvent != null)
            {
                List <Rectangle> rects = null;
                if ((facerectArray != null) && (facerectArray.Length > 0))
                {
                    rects = new List <Rectangle>(facerectArray);
                }
                FaceDetectInfo info = new FaceDetectInfo(image, frameId, rects);
                NoticeFrameEvent(info);
            }
            else
            {
                image.Dispose();
            }
        }