Example #1
0
        /// <summary> 读写IC卡 </summary>
        private int CheckICard()
        {
            AFT_System.Face.FaceFun.TimeStart();
            var icInfo = new IdCardFunc.TicketCardInfo();
            int i      = IdCardFunc.GetTicketData_New(ref icInfo);

            if (i == 0)
            {
                if (icInfo.IDCard.IsNullOrEmpty())
                {
                    "读卡成功,但身份证号码为空.".ToSaveLog(); return(1);
                }
                //黑名单检查
                if (IsCheckBlack && AFT_System.Face.FaceFun.IsInBlack(icInfo.IDCard))
                {
                    LeftImg.Visibility = Visibility.Visible;
                }
                //判断是否超过时限
                var now  = DateTime.Now;
                var time = IrAdvanced.StringToDateTime(icInfo.Reserved2);
                if ((time.Year <= now.Year && time.Month <= now.Month && time.Day < now.Day))
                {
                    //读取数据库白名单记录
                    white = AFT_System.Face.FaceFun.CheckWhiteName(icInfo.IDCard);
                    if (white != null)
                    {
                        Bitmap photobitmap = IrAdvanced.GetBitmapFormByte(white.Value.IdCardPhoto);
                        Dispatcher.Invoke(() =>
                        {
                            BitmapImage photoImg = IrAdvanced.GetBitmapImageFormByte(white.Value.IdCardPhoto);
                            CvrImgMain.Source    = CvrImg.Source = photoImg;
                        });
                        FaceVerifyFactory faceFactory    = new FaceVerifyFactory();
                        FaceVerifyData    faceVerifyData = faceFactory.FaceVerify(photobitmap);
                        Rft2 = faceVerifyData.rr_Feature;
                        if (Face.TzIr.ToInt32() == 0)
                        {
                            icPass = true;
                            ShowEventMsg("正在进行人脸识别", MsgType.Info);
                        }
                        else
                        {
                            ShowEventMsg("无法识别该照片人脸特征码", MsgType.InfoErr);
                        }
                    }
                    else
                    {
                        ShowEventMsg("白名单不存在此年票记录.", MsgType.InfoErr);
                    }
                }
                else
                {
                    Dispatcher.InvokeAsync(() =>
                    {
                        ShowEventMsg(string.Format("一天只能入场一次!\n{0}已使用", icInfo.Reserved2), MsgType.InfoErr);
                        MyArea.Text = string.Format("区域:{0}区{1}排{2}座", icInfo.StadiumArea, icInfo.Row, icInfo.Position);
                        MyNum.Text  = "票号:" + icInfo.CardNo;
                        MyType.Text = "类型:年票";
                        MyTime.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
                        ShowEventMsg("检票失败", MsgType.FaceErr);
                    });
                }
            }
            AFT_System.Face.FaceFun.TimeStop("IC读写耗时:");
            return(i);
        }
Example #2
0
        private void FaceCompare()
        {
            Dispatcher.InvokeAsync(() =>
            {
                ShowEventMsg("识别中", MsgType.TipErr);
                this.MyName.Text = "购票者:";
                this.MyTime.Text = "检票时间:";
                CvrImg.Source    = null;
            });
            try
            {
                "开始识别".ToSaveLog("FaceVerify");
                FaceVerifyData faceVerifyData = faceFactory.FaceVerify(MyMat);

                "识别完成".ToSaveLog("FaceVerify");
                if (faceVerifyData.Success)
                {
                    DateTime checkTime = DateTime.Now;
                    foreach (WhiteNameInfo item in AFT_System.Face.FaceFun.WhiteList)
                    {
                        FaceIr = faceFactory.FaceResult(faceVerifyData.rr_Feature, item.rrfeature);
                        if (FaceIr > _confidence)
                        {
                            if (AFT_System.Face.FaceFun.IsInSessions(item.IdNo, MyMatch.SessionId, out checkTime))
                            {
                                Dispatcher.InvokeAsync(() =>
                                {
                                    CvrImg.Source    = null;
                                    CvrImg.Source    = new BitmapImage(new Uri(item.IdCardPhotoPath, UriKind.Absolute));
                                    this.MyName.Text = "购票者:" + item.BuyName;
                                    this.MyTime.Text = "检票时间:" + checkTime.ToString("yyyy-MM-dd hh:mm");
                                    ShowEventMsg("该人员已检票", MsgType.TipErr);
                                });
                            }
                            else
                            {
                                Dispatcher.InvokeAsync(() =>
                                {
                                    CvrImg.Source = null;
                                    CvrImg.Source = new BitmapImage(new Uri(item.IdCardPhotoPath, UriKind.Absolute));

                                    //CameraPic2.ImageView2 = null;
                                    //CameraPic2.ImageView2 = Face.FaceBitmapSource;


                                    //保存识别到的摄像头图片
                                    item.IdNo.ToSaveLog("保存检票成功照片:");
                                    PhotoOk = FaceFun.BitmapToByte(MyMat.Bitmap);
                                    ShowEventMsg("比对成功", MsgType.FaceOk);
                                    FaceIr.ToString().ToSaveLog(item.IdNo + " 比对成功,相似度:");
                                    if (Cvr != null)
                                    {
                                        Cvr.Info = new CvrInfo()
                                        {
                                            Name      = item.BuyName,
                                            Number    = item.IdNo,
                                            PeopleImg = item.IdCardPhotoPath
                                        };
                                        this.MyName.Text = "购票者:" + item.BuyName;
                                        this.MyTime.Text = "检票时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm");
                                        InSession();
                                    }
                                });
                            }
                            FacePass   = true; //当取信值大于80%认为是同一个人比对成功
                            sucessTime = DateTime.Now;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                ex.ToSaveLog("OnComplete:");
            }
            Compareing = false;
        }