接上一篇

5.设备→云端

通过员工号读取设备是否存在员工信息,若存在则取设备的人脸图片信息,并转成base64图片保存在数据库

//设备→云端private void btnmom_Click(object sender, RoutedEventArgs e){try{lblMsg.Visibility = Visibility.Visible;lblMsg.Content = "正在同步";Login();if (m_UserID >= 0){List<base_user_extend> facelst = fingerlst.Where(x => string.IsNullOrEmpty(x.hk_face_info)).ToList();foreach (var item in facelst){CreateDeviceFace(item);}if (syncStatus == 200){lblMsg.Content = "同步成功";LoadUser();}else{lblMsg.Content = "同步失败";}}else{lblMsg.Content = "同步失败,无法打开设备端口";}}catch (Exception ex){Logger.Error("设备信息同步到cosmo异常:"+ex.Message);lblMsg.Content = "设备信息同步到cosmo失败";}Logout();}#region 设备人脸信息private void CreateDeviceFace(base_user_extend info){syncStatus = -4;if (m_lGetFaceCfgHandle != -1){CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceCfgHandle);m_lGetFaceCfgHandle = -1;}string sURL = "POST /ISAPI/Intelligent/FDLib/FDSearch?format=json";IntPtr ptrURL = Marshal.StringToHGlobalAnsi(sURL);m_lGetFaceCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_UserID, CHCNetSDK.NET_DVR_FACE_DATA_SEARCH, ptrURL, sURL.Length, null, IntPtr.Zero);if (m_lGetFaceCfgHandle == -1){Marshal.FreeHGlobal(ptrURL);Logger.Error("NET_DVR_StartRemoteConfig fail [url:PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json] error:" + CHCNetSDK.NET_DVR_GetLastError());return;}Marshal.FreeHGlobal(ptrURL);CSearchFaceDataCond JsonSearchFaceDataCond = new CSearchFaceDataCond();JsonSearchFaceDataCond.searchResultPosition = 0;JsonSearchFaceDataCond.maxResults = 1;JsonSearchFaceDataCond.faceLibType = "blackFD";JsonSearchFaceDataCond.FDID = "1";JsonSearchFaceDataCond.FPID = info.UserCode;string strJsonSearchFaceDataCond = JsonConvert.SerializeObject(JsonSearchFaceDataCond, Formatting.Indented,new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });IntPtr ptrJsonSearchFaceDataCond = Marshal.StringToHGlobalAnsi(strJsonSearchFaceDataCond);CHCNetSDK.NET_DVR_JSON_DATA_CFG struJsonDataCfg = new CHCNetSDK.NET_DVR_JSON_DATA_CFG();struJsonDataCfg.dwSize = (uint)Marshal.SizeOf(struJsonDataCfg);IntPtr ptrJsonDataCfg = Marshal.AllocHGlobal((int)struJsonDataCfg.dwSize);Marshal.StructureToPtr(struJsonDataCfg, ptrJsonDataCfg, false);int dwState = (int)CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS;uint dwReturned = 0;while (true){dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(m_lGetFaceCfgHandle, ptrJsonSearchFaceDataCond, (uint)strJsonSearchFaceDataCond.Length, ptrJsonDataCfg, (uint)Marshal.SizeOf(struJsonDataCfg), ref dwReturned);if (dwState == CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS){ProcessFaceData(ptrJsonDataCfg,info);break;}else if (dwState == CHCNetSDK.NET_SDK_GET_NEXT_STATUS_FAILED){Logger.Error("FAILED error:" + CHCNetSDK.NET_DVR_GetLastError());break;}else{Logger.Error("exception error:" + CHCNetSDK.NET_DVR_GetLastError());break;}}if (m_lGetFaceCfgHandle > 0){CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceCfgHandle);m_lGetFaceCfgHandle = -1;}Marshal.FreeHGlobal(ptrJsonSearchFaceDataCond);Marshal.FreeHGlobal(ptrJsonDataCfg);}private void ProcessFaceData(IntPtr lpBuffer,base_user_extend info){var ss = Marshal.PtrToStringAnsi(lpBuffer);CHCNetSDK.NET_DVR_JSON_DATA_CFG m_struJsonDataCfg = (CHCNetSDK.NET_DVR_JSON_DATA_CFG)Marshal.PtrToStructure(lpBuffer, typeof(CHCNetSDK.NET_DVR_JSON_DATA_CFG));string strSearchFaceDataReturn = Marshal.PtrToStringAnsi((IntPtr)m_struJsonDataCfg.lpJsonData, (int)m_struJsonDataCfg.dwJsonDataSize);CSearchFaceDataReturn m_JsonSearchFaceDataReturn;m_JsonSearchFaceDataReturn = JsonConvert.DeserializeObject<CSearchFaceDataReturn>(strSearchFaceDataReturn);if (m_JsonSearchFaceDataReturn.totalMatches == 0){syncStatus = 200;Logger.Error("not exist face");return;}try{string strpath = string.Format($"{info.UserCode}{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.jpg");using (FileStream fs = new FileStream(strpath, FileMode.OpenOrCreate)){int FaceLen = (int)m_struJsonDataCfg.dwPicDataSize;byte[] by = new byte[FaceLen];Marshal.Copy(m_struJsonDataCfg.lpPicData, by, 0, FaceLen);fs.Write(by, 0, FaceLen);fs.Close();}if(!string.IsNullOrEmpty(strpath)){fileLearningHandbook getfilelist = new fileLearningHandbook();string imgbase = ImgToBase64(strpath);getfilelist.InsertFaceInfo(info.UserCode, imgbase, out string Msg);syncStatus = 200;}//pictureBoxFace.Image = Image.FromFile(strpath);//textBoxFilePath.Text = string.Format("{0}\\{1}", Environment.CurrentDirectory, strpath);}catch (Exception ex){CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceCfgHandle);Logger.Error("ProcessFingerData failed"+ex.Message);}}#endregion

6.公共方法、实体类

  1. 公共方法

      #region 图片基础操作方法/// <summary>/// base64转图片/// </summary>/// <param name="strbase64"></param>/// <returns></returns>protected string Base64StringToImage(string strbase64){try{byte[] arr = Convert.FromBase64String(strbase64);MemoryStream ms = new MemoryStream(arr);Bitmap bmp = new Bitmap(ms);string path = @"c:\face\";if (!Directory.Exists(path)){//创建文件夹Directory.CreateDirectory(path);}string filename = path + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg";bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp.Save(@"d:\"test.bmp", ImageFormat.Bmp);//bmp.Save(@"d:\"test.gif", ImageFormat.Gif);//bmp.Save(@"d:\"test.png", ImageFormat.Png);ms.Close();return filename;}catch (Exception ex){return null;}}/// <summary>/// 图片转Base64/// </summary>/// <param name="ImageFileName">图片的完整路径</param>/// <returns></returns>public string ImgToBase64(string ImageFileName){try{Bitmap bmp = new Bitmap(ImageFileName);MemoryStream ms = new MemoryStream();bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();return Convert.ToBase64String(arr);}catch (Exception){return null;}}#endregion
  2. 实体类
     #region 实体类public class CUserInfoCfg{public CUserInfo UserInfo { get; set; }}public class CRightPlan{[DefaultValue(-1)]public int doorNo { get; set; }[DefaultValue(null)]public string planTemplateNo { get; set; }}public class CUserInfo{public string employeeNo { get; set; }public string name { get; set; }public string userType { get; set; }public bool closeDelayEnabled { get; set; }public CValid Valid { get; set; }public string belongGroup { get; set; }public string password { get; set; }public string doorRight { get; set; }public List<CRightPlan> RightPlan { get; set; }public int maxOpenDoorTime { get; set; }public int openDoorTime { get; set; }public int roomNumber { get; set; }public int floorNumber { get; set; }public bool doubleLockRight { get; set; }public bool alwaysOpenRight { get; set; }public bool localUIRight { get; set; }public string userVerifyMode { get; set; }}public class CValid{public bool enable { get; set; } //reqpublic string beginTime { get; set; } //reqpublic string endTime { get; set; } //req[DefaultValue(null)]public string timeType { get; set; }}public class CResponseStatus{public string requestURL { get; set; }public int statusCode { get; set; }public string statusString { get; set; }public string subStatusCode { get; set; }public int errorCode { get; set; }public string errorMsg { get; set; }}public class CCardInfoCfg{public CCardInfo CardInfo { get; set; }}public class CCardInfo{public string employeeNo { get; set; } //reqpublic string cardNo { get; set; } //reqpublic bool deleteCard { get; set; } //optpublic string cardType { get; set; } //req}public class CSetFaceDataCond{public string faceLibType { get; set; } //reqpublic string FDID { get; set; } //reqpublic string FPID { get; set; } //optpublic bool deleteFP { get; set; } //opt}public class CSearchFaceDataCond{public int searchResultPosition { get; set; } //reqpublic int maxResults { get; set; } //reqpublic string faceLibType { get; set; } //reqpublic string FDID { get; set; } //reqpublic string FPID { get; set; } //opt}public class CSearchFaceDataReturn{public string requestURL { get; set; } //optpublic int statusCode { get; set; } //reqpublic string statusString { get; set; } //reqpublic string subStatusCode { get; set; } //reqpublic int errorCode { get; set; } //optpublic string errorMsg { get; set; } //optpublic string responseStatusStrg { get; set; } //optpublic int numOfMatches { get; set; } //optpublic int totalMatches { get; set; } //optpublic List<CMatchList> MatchList { get; set; } //opt}public class CMatchList{public string FPID { get; set; } //optpublic int employeeNo { get; set; } //opt}#endregion

C#海康威视人脸设备-创建人脸信息,并同步到数据库2相关推荐

  1. C#海康威视人脸设备-创建人脸信息,并同步到数据库

    目录 1.介绍 2.登录设备 3.退出登录设备 4.云端→设备 5.设备→云端 6.公共方法.实体类 1.介绍 海康威视官方有对应的demo,该文章只是总结! 使用的wpf,数据库用的是mysql 主 ...

  2. (五)为边缘AI人脸识别创建人脸数据库

    目录 介绍 数据库中有什么 创建数据库 填充数据库 下一步 在这里,我们将解释用于人脸识别的简单人脸数据库的结构,开发用于将人脸添加到人脸数据库的实用程序的Python代码,并提供下载人脸以创建数据库 ...

  3. hwd分别是长宽高_DS-2CD7A87HWD-XZS 海康威视800万AI人脸抓拍比对筒型网络摄像机

    DS-2CD7A87HWD-XZS 海康威视800万AI筒型网络摄像机 支持人脸抓拍 人脸前端比对 车辆抓拍 车牌识别 支持H.265编码 内置电动变焦2.8-12mm或者8-32mm镜头 DS-2C ...

  4. 人工智能个性化和逼真的漫画素描生成输入人脸图像创建漫画照片

    人工智能个性化和逼真的漫画素描生成输入人脸图像创建漫画照片摘要 - 在本文中,我们提出了第一个交互式个性化和真实感面部漫画的素描系统.输入人脸图像,用户可以通过操纵其面部特征曲线来创建漫画照片.我们的 ...

  5. Python-OpenCV创建人脸识别器

    1.打开摄像头进行人脸识别 #导入相关库 import numpy as np import cv2 #要加载人脸检测相关的pre-trained分类器,级联检测器 detector = cv2.Ca ...

  6. 广东首例!涉“人脸识别”公民个人信息保护民事公益诉讼案宣判

    认证数据保护官CDPO培训课程第3期 报名通道 时间:2022年7月30日.31日(周六.周日) 形式:线上培训及线上考试 联系:微信(徐博士):heguilvshi,手机(朱老师):138 1664 ...

  7. K210人脸识别+RFID录入信息

    K210系列教程 使用MaixPy IDE开发K210 K210实现人脸识别(附代码解读) K210人脸识别+人脸信息存储 K210人脸识别+RFID录入信息 (置顶:有位码友看了这篇博客后尝试了RF ...

  8. matlab人脸识别样本库建立,facenet 人脸识别(二)——创建人脸库搭建人脸识别系统...

    搭建人脸库 选择的方式是从百度下载明星照片 照片下载,downloadImageByBaidu.py # coding=utf-8 """ 爬取百度图片的高清原图 &qu ...

  9. 大华sdk(java)上传人脸图片到人脸库,订阅人脸识别对比

    上传人脸图片到人脸库 controller: @RestController @RequestMapping("/facePicture") public class FacePi ...

最新文章

  1. 为什么三维重建才是计算机视觉的最终归宿?
  2. QML基础类型之palette
  3. C语言中的变量是怎么回事?
  4. 证明创建runnable实例和普通类时间一样长
  5. Java多线程并发——CAS和AQS
  6. 【语音识别】之梅尔频率倒谱系数(mfcc)及Python实现
  7. java heapdump 分析工具_Java Heap dump文件分析工具jhat简介
  8. 关于word2010指定位置插入页码及三线表格绘制问题
  9. 图片标注问题image_caption
  10. win7浏览器主页修改不过来_Win7系统IE浏览器无法更改主页的具体解决方法
  11. python 拦截windows弹窗广告_通过python实现弹窗广告拦截过程详解
  12. STM32 部分重映射和完全重映射
  13. Faster R-CNN最全讲解
  14. python ip地址处理_Python学习笔记-IP地址处理模块Ipy
  15. 解决安卓手机卡顿的七个技巧
  16. jeecg-boot:将单表列表页作为弹框,并且传递参数到解决方案(场景商品到明细信息维护)
  17. 自动下载RDS MySQL备份文件
  18. 人工智能算法对发明创造的知识产权保护
  19. CommandArgument属性 绑定参数
  20. 金蝶Apusic应用服务器

热门文章

  1. Win 10配置VPN代理时遇到的问题:500 Internal Privoxy Error
  2. freeglut_光照设置_材质设置_笔记与心得
  3. qq群搜索关键词排名优化
  4. matlab对3r操作臂进行运动学仿真,并根据动力学方程设计控制器simulink仿真
  5. CSS实现背景图片垂直居中定位2种方法
  6. 宗海图cad_AutoCAD技术在海域使用论证宗海图绘制中的应用
  7. Matlab 常用语句
  8. MySQL DBlink
  9. ubuntu20.4系统安装CH340驱动并使用串口调试助手
  10. ESP8266-Arduino编程实例-MPU6500加速计陀螺仪驱动