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