/// <summary> /// 设置初始值 /// </summary> /// <param name="myFaceObj"></param> /// <param name="i">1:添加模版 2:修改模版 3:抓拍修改模版</param> /// <param name="image">从抓拍处添加模版,传入的图片</param> public void SetTempleteInfo(MyFaceObj myFaceObj, int i, byte[] image) { if (i == 2) { tIPViewModel.Id = myFaceObj.fa_ob_tcUuid + ""; tIPViewModel.ImportTime = myFaceObj.fa_ob_dTm; tIPViewModel.Remark = myFaceObj.fa_ob_tcRemarks; tIPViewModel.Age = myFaceObj.nAge + ""; tIPViewModel.Name = myFaceObj.tcName; tIPViewModel.SelectedSex = tIPViewModel.Sex.IndexOf(myFaceObj.nSex); tIPViewModel.SelectedType = tIPViewModel.Type.IndexOf(myFaceObj.nType); tIPViewModel._FaceObj = myFaceObj.faceObj; tIPViewModel.Title = @"..\..\Images\子菜单修改模板.png"; } else { string StringName = System.Guid.NewGuid().ToString(); StringName = StringName.Replace("-", ""); tIPViewModel.Id = StringName; tIPViewModel.ImportTime = DateTime.Now.ToString(); if (i == 3) { tIPViewModel._FaceObj.Tmplate = new List <FaceObjTemplate>(); FaceObjTemplate faceObjectTemplate = new FaceObjTemplate(); faceObjectTemplate.Img = image; tIPViewModel._FaceObj.Tmplate.Add(faceObjectTemplate); } tIPViewModel.Title = @"..\..\Images\子菜单添加模板.png"; } }
/// <summary> /// 删除模版 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDeleteTemplate_Click(object sender, RoutedEventArgs e) { if (listViewTemplate.SelectedIndex >= 0) { var selectedItem = listViewTemplate.SelectedItem; MyFaceObj myFaceObj = selectedItem as MyFaceObj; int isSuccess = -1; if (myFaceObj != null) { bool?result = MB_MODULES.Views.MyMessage.Show("是否删除模板!"); if (result == true)//点击确定 { isSuccess = thirft.DelFaceObj(myFaceObj.fa_ob_tcUuid); if (isSuccess == 0) { MB_MODULES.Views.MyMessage.showYes("删除模板 " + myFaceObj.tcName + " 成功!"); cetTemplateManagerDelegate.BeginInvoke(currPage, null, null); } if (isSuccess == -1) { MB_MODULES.Views.MyMessage.showYes("删除模板失败!"); } } } } else { MB_MODULES.Views.MyMessage.Show("请选择要删除的模板!"); } }
/// <summary> /// 删除模版 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDeleteTemplate_Click(object sender, RoutedEventArgs e) { if (listViewTemplate.SelectedIndex < 0) { MyMessage.showYes("请选中需要删除的模版!"); return; } MyFaceObj myFaceObj = listViewTemplate.SelectedItem as MyFaceObj; int nSucess = -1; if (myFaceObj != null) { bool?result = MyMessage.Show("是否删除模板!"); if (result == true)//点击确定 { nSucess = thirft.DelFaceObj(myFaceObj.fa_ob_tcUuid); if (nSucess == 0) { MyMessage.showYes("删除模板" + myFaceObj.tcName + "成功!"); } if (nSucess == -1) { MyMessage.showYes("删除模板失败!"); } } } else { return; } }
/// <summary> /// 查询模版的比对记录 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnQueryTemplateCmp_Click(object sender, RoutedEventArgs e) { if (listViewTemplate.SelectedIndex < 0) { MB_MODULES.Views.MyMessage.showYes("请选中需要查询的模版!"); return; } MyFaceObj myFaceObj = listViewTemplate.SelectedItem as MyFaceObj; QueryTemplateCmpDelegate(myFaceObj.tcName); }
/// <summary> /// 修改模板 /// </summary> private void UpdateTemplate() { if (listViewTemplate.SelectedIndex < 0) { MB_MODULES.Views.MyMessage.showYes("请选中需要修改的模版!"); return; } MyFaceObj myFaceObj = listViewTemplate.SelectedItem as MyFaceObj; TempleteInfoPop tIP = new TempleteInfoPop(); tIP.SetTempleteInfo(myFaceObj, 2, null); tIP.ShowDialog(); }
private void GotoTraceAnalysisFunc(object obj) { MyFaceObj myFaceObj = obj as MyFaceObj; if (MyFaceObj.imgStream.Length > 0) { this.GoToCommandFunc(obj, 5); } else { MyMessage.Show("请选中要操作的一条数据"); } }
private void ListFaceObject_SelectionChanged(object sender, SelectionChangedEventArgs e) { MyFaceObj myFaceObj = ListFaceObject.SelectedItem as MyFaceObj; List <FaceObj> faceObj = thirft.QueryFaceObj(myFaceObj.fa_ob_tcUuid); for (int i = 0; i < 13; i++) { CapInfo capInfo = new CapInfo(); cCViewModel.CapInfoList.Add(capInfo); } cCViewModel.CapInfoList[0].Key = "人脸uuidID"; cCViewModel.CapInfoList[0].Value = faceObj[0].TcUuid.ToString(); cCViewModel.CapInfoList[1].Key = "姓名"; cCViewModel.CapInfoList[1].Value = faceObj[0].TcName.ToString(); // cCViewModel.CapInfoList[2].Key = "类型"; cCViewModel.CapInfoList[2].Value = GlobalCache.FaceTypeList.Cast <STypeInfo>().FirstOrDefault(x => x.Type == faceObj[0].NType).Description; // cCViewModel.CapInfoList[3].Key = "性别"; cCViewModel.CapInfoList[3].Value = cCViewModel.Sex[faceObj[0].NSex]; cCViewModel.CapInfoList[4].Key = "人脸对象添加时间"; cCViewModel.CapInfoList[4].Value = faceObj[0].DTm.ToString(); cCViewModel.CapInfoList[5].Key = "模板识别的年龄"; cCViewModel.CapInfoList[5].Value = faceObj[0].NAge.ToString(); cCViewModel.CapInfoList[6].Key = "人脸备注"; cCViewModel.CapInfoList[6].Value = faceObj[0].TcRemarks.ToString(); cCViewModel.CapInfoList[7].Key = "模板uuid"; cCViewModel.CapInfoList[7].Value = faceObj[0].Tmplate[0].TcUuid.ToString(); cCViewModel.CapInfoList[8].Key = "所属FaceObj的uuid"; cCViewModel.CapInfoList[8].Value = faceObj[0].Tmplate[0].TcObjid.ToString(); cCViewModel.CapInfoList[9].Key = "模板标识键"; cCViewModel.CapInfoList[9].Value = faceObj[0].Tmplate[0].TcKey.ToString(); cCViewModel.CapInfoList[10].Key = "模板序号"; cCViewModel.CapInfoList[10].Value = faceObj[0].Tmplate[0].NIndex.ToString(); cCViewModel.CapInfoList[11].Key = "模板添加时间"; cCViewModel.CapInfoList[11].Value = faceObj[0].Tmplate[0].DTm.ToString(); cCViewModel.CapInfoList[12].Key = "模板备注"; cCViewModel.CapInfoList[12].Value = faceObj[0].Tmplate[0].TcRemarks.ToString(); ListViewRegisterInfo.Items.Refresh(); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <returns></returns> //async Task<ObservableCollection<PointLatLngImg>> SearchResult(object sender, RoutedEventArgs e) //{ // return await Task<ObservableCollection<PointLatLngImg>>.Run(() => // { // ObservableCollection<PointLatLngImg> Points = new ObservableCollection<PointLatLngImg>(); // if (Convert.ToDateTime(StartDay) <= Convert.ToDateTime(EndDay)) // { // long start = DateTimeConvert.ToTotalSeconds(true, StartDay, StartHour, StartMinute); // long end = DateTimeConvert.ToTotalSeconds(false, EndDay, EndHour, EndMinute); // try // { // List<TrackInfo> TrackInfos = new List<TrackInfo>(); // if (SnapPersonInfo != null) // { // TrackInfos = thirft.QueryTrackPlayback(SnapPersonInfo.SnapId, SnapPersonInfo.PhotoByteArray, start, end); // } // else // { // comServer.SocketOpter.ExceptionMsgFromSTAThread("请添加照片"); // } // ListItemSourceObj = new List<CameraSnapPerson>(); // int row = 0; // foreach (TrackInfo item in TrackInfos) // { // CameraSnapPerson csp = new CameraSnapPerson(); // csp.RowNumber = ++row; // csp.CameraInfo = new Camera(); // csp.CameraInfo.Name = item.Name; // csp.Datetime = item.Capimg != null ? DateTimeConvert.LongTimeToString(item.Capimg[0].Time) : ""; // csp.CameraInfo.Location = item.Channel_address; // csp.CameraInfo.Longitude = item.Longitude; // csp.CameraInfo.Latitude = item.Latitude; // ListItemSourceObj.Add(csp); // PointLatLngImg ipoint = new PointLatLngImg(); // if (!string.IsNullOrEmpty(item.Latitude) && !string.IsNullOrEmpty(item.Longitude)) // ipoint.Point = new GMap.NET.PointLatLng(Convert.ToDouble(item.Latitude), Convert.ToDouble(item.Longitude)); // ipoint.Img = ImageConvert.ToBitmapImage(SnapPersonInfo.PhotoByteArray); // ipoint.ImgVisibility = Visibility.Visible; // ipoint.ImgframeVisibility = Visibility.Visible; // Points.Add(ipoint); // } // } // catch (Exception ex) // { // Logger<MainTraceAnalysisView>.Log.Error(ex); // } // OnPropertyChanged("ListItemSourceObj"); // } // else // { // comServer.SocketOpter.ExceptionMsgFromSTAThread("结束时间不能大于开始时间"); // } // return Points; // }).ConfigureAwait(false); //} public void GetPersonInfo(object obj) { Type type = obj.GetType(); SnapPersonInfo = new CameraSnapPerson(); try { if (obj is MyCmpFaceLogWidthImgModel)//对比记录至此 { MyCmpFaceLogWidthImgModel mfl = obj as MyCmpFaceLogWidthImgModel; SnapPersonInfo.Name = mfl.T1.UserName; SnapPersonInfo.Photo = mfl.SnapImage; SnapPersonInfo.PhotoByteArray = mfl.SnapImageBuffer; SnapPersonInfo.Datetime = mfl.date + mfl.time; SnapPersonInfo.CameraInfo = new Camera(); SnapPersonInfo.CameraInfo.Location = mfl.Address; SnapPersonInfo.CameraInfo.Longitude = mfl.Longitude; SnapPersonInfo.CameraInfo.Latitude = mfl.Latitude; SnapPersonInfo.Score = mfl.Score; SnapPersonInfo.Source = "抓拍库"; } else if (obj is CameraSnapPerson)//静态分析至此 { SnapPersonInfo = obj as CameraSnapPerson; SnapPersonInfo.Name = "通道:" + SnapPersonInfo.Name; SnapPersonInfo.Source = "抓拍库"; } else if (obj is MyFaceObj)//模板库至此 { MyFaceObj mfo = obj as MyFaceObj; SnapPersonInfo.Name = "姓名:" + mfo.tcName; SnapPersonInfo.Photo = mfo.img; SnapPersonInfo.Source = "模板库"; SnapPersonInfo.PhotoByteArray = mfo.imgStream; //ImageConvert.ToImageStream(mfo.img as BitmapImage); SnapPersonInfo.Datetime = mfo.fa_ob_dTm; } } catch (Exception ex) { Logger <MainTraceAnalysisView> .Log.Error(ex); } finally { OnPropertyChanged("SnapPersonInfo"); } }
public void GetCmpByCapId() { try { CmpFaceList = thirft.QueryCmpByCapIdWidthImgH(cCViewModel.Id, cCViewModel.Day); List <FaceObj> ListFaceObj = new List <FaceObj>(); int i = 0; foreach (var cmpFaceLogWidthImg in CmpFaceList) { List <FaceObj> listFaceObj = thirft.QueryFaceObj(cmpFaceLogWidthImg.TcUuid); foreach (var faceObj in listFaceObj) { ListFaceObj.Add(faceObj); } } foreach (FaceObj cmpFace in ListFaceObj) { for (int j = 0; j < cmpFace.Tmplate.Count; j++) { MyFaceObj myFaceObj = new MyFaceObj(); //读入MemoryStream对象 BitmapImage myBitmapImage = new BitmapImage(); myBitmapImage.BeginInit(); myBitmapImage.StreamSource = new System.IO.MemoryStream(cmpFace.Tmplate[j].Img); myFaceObj.img = myBitmapImage; myBitmapImage.EndInit(); myBitmapImage = null; myFaceObj.fa_ob_tcUuid = cmpFace.TcUuid; myFaceObj.tcName = cmpFace.TcName; myFaceObj.nAge = CmpFaceList[i].Score; MyFaceObjListTemp.Add(myFaceObj); i++; } } ShowFaceObject(); } catch (Exception ex) { Logger <OperaExcel> .Log.Error("GetCmpByCapId", ex); } }
/// <summary> /// 切换选中项 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listViewTemplate_SelectionChanged(object sender, SelectionChangedEventArgs eventArgs) { MyFaceObj myFaceObj = listViewTemplate.SelectedItem as MyFaceObj; if (myFaceObj == null) { return; } //获得模板id和所属的人脸Id string nTemplateFaceID = myFaceObj.fa_ob_tcUuid; int nTemplateId = myFaceObj.nMain_ftID; List <FaceObj> ListFaceObj = new List <FaceObj>(); ListFaceObj.Add(myFaceObj.faceObj); byte[] imageBytes = new byte[10]; btnTemplatePhoto.Dispatcher.BeginInvoke(new Action(() => { this.btnTemplatePhoto.Content = ""; //遍历得到对应模板ID下的照片 if (ListFaceObj.Count != 0) { if (ListFaceObj[0].NMain_ftID == nTemplateId) { try { if (nTemplateId == 0) { nTemplateId = 1; } for (int i = 0; i < ListFaceObj[0].Tmplate.Count; i++) { if (ListFaceObj[0].Tmplate[i].NIndex == nTemplateId - 1) { GridTemplatePic.Dispatcher.BeginInvoke(new Action(() => { GridTemplatePic.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri("pack://application:,,,/Images/抓拍照片纯背景.png")) }; GridAfterbtnTemplatePhoto.Visibility = Visibility.Visible; })); btnTemplatePhoto.Visibility = Visibility.Visible; imageBytes = ListFaceObj[0].Tmplate[i].Img; System.IO.MemoryStream ms = new System.IO.MemoryStream(imageBytes); //img是从数据库中读取出来的字节数组 //读入MemoryStream对象 BitmapImage myBitmapImage = new BitmapImage(); myBitmapImage.BeginInit(); myBitmapImage.StreamSource = ms; myBitmapImage.EndInit(); this.btnTemplatePhoto.Background = new ImageBrush { ImageSource = myBitmapImage }; tMViewModel.MyFaceObj.img = myBitmapImage; tMViewModel.MyFaceObj.imgStream = imageBytes; myBitmapImage = null; } } } catch (Exception e) { if (e.InnerException.Message.Contains("0x88982F72")) { try { FileStream fs = new FileStream(System.Windows.Forms.Application.StartupPath + "\\转存的图片.jpg", FileMode.OpenOrCreate); fs.Write(imageBytes, 0, imageBytes.Length); fs.Flush(); fs.Close(); fs.Dispose(); System.Drawing.Image img = new System.Drawing.Bitmap(System.Windows.Forms.Application.StartupPath + "\\转存的图片.jpg"); MemoryStream stream = new MemoryStream(); img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); BinaryReader br = new BinaryReader(stream); byte[] photo = stream.ToArray(); stream.Close(); stream.Dispose(); System.IO.MemoryStream ms = new System.IO.MemoryStream(photo); //img是从数据库中读取出来的字节数组 //读入MemoryStream对象 BitmapImage myBitmapImage = new BitmapImage(); myBitmapImage.BeginInit(); myBitmapImage.StreamSource = ms; myBitmapImage.EndInit(); this.btnTemplatePhoto.Background = new ImageBrush { ImageSource = myBitmapImage }; tMViewModel.MyFaceObj.img = myBitmapImage; myBitmapImage = null; //File.Delete(System.Windows.Forms.Application.StartupPath + "\\转存的图片.jpg"); } catch (Exception ex) { MB_MODULES.Views.MyMessage.showYes("您当前的操作过于频繁,请稍后重试"); Logger <TemplateManager> .Log.Error("listViewTemplate_SelectionChanged", ex); } } else { //imageBytes; MB_MODULES.Views.MyMessage.showYes("获得数据库图片错误!" + e.InnerException.Message); } } } } })); }