海康威视DS-K56A0硬件集成

  • 1.需求
  • 2.代码实现
    • 设备登录
    • 报警布防监听
    • 回调函数

1.需求

集成海康威视DS-K560人证对比终端设备,实现人脸+身份证识别,识别出身份证信息,抓拍人脸照片以及身份证照片

2.代码实现

1.首先我们需要把海康威视的的部分库文件导入到我们的项目中,没有库文件可以去海康威视的官网下载最新的SDK,压缩包里面会有库文件,链接我会放在最下面。
需要导入的文件有:HCNetSDKCom文件夹、AudioRender.dll、HCCore.dll、HCNetSDK.dll、hlog.dll、hpr.dll、libeay32.dll、ssleay32.dll。
以下是我的库文件存放路径大家可以参考一下

2.

设备登录

 /*** 登录* */public static void login(){//注册之前判断有没有已注册用户,有就删除if(lUserID>-1){//注销hCNetSDK.NET_DVR_Logout(lUserID);lUserID = -1;}//注册    //设备IP地址m_sDeviceIP = "192.168.1.64";m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());//设备账户  如果没有,一般默认为adminm_sUsername = "admin";m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());//设备密码  购买时会提供m_sPassword ="1232132";m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());//设备端口m_strLoginInfo.wPort =8000;//海康威视登录登录方法lUserID =hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo);//判断注册是否成功if(lUserID==-1){JOptionPane.showMessageDialog(null, "false,错误号:" +  hCNetSDK.NET_DVR_GetLastError());} else {JOptionPane.showMessageDialog(null, "success");}}

报警布防监听

//布防public static void initMemberFlowUpload(){//设置报警回调函数boolean callflag = hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(new Haikangimpl(),null);if(callflag){System.out.println("callback----success+设置回调函数成功");}//启用布防-其他报警布防参数不需要设置,不支持HCNetSDK.NET_DVR_SETUPALARM_PARAM lpSetupParam = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();lpSetupParam.dwSize=lpSetupParam.size();lpSetupParam.byLevel=1;//智能交通布防优先级:0- 一等级(高),1- 二等级(中),2- 三等级(低)lpSetupParam.byAlarmInfoType=1;//智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT)lpSetupParam.byDeployType =1; //布防类型(仅针对门禁主机、人证设备):0-客户端布防(会断网续传),1-实时布防(只上传实时数据)lpSetupParam.write();final   int lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID,lpSetupParam);if (lAlarmHandle==-1){System.out.println("NET_DVR_SetupAlarmChan_V41 error, %d\n"+hCNetSDK.NET_DVR_GetLastError());hCNetSDK.NET_DVR_Logout(lUserID);hCNetSDK.NET_DVR_Cleanup();System.out.println("布防失败");}else {System.out.println("bufangsuccess++布防成功");}//等待过程中,如果设备上传报警信息,在报警回调函数里面接收和处理报警信息Timer timer =new Timer();// 实例化Timer类timer.schedule(new TimerTask() {@Overridepublic void run() {//撤销布防上传通道if (! hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle)){System.out.println("! hCNetSDK.NET_DVR_CloseAlarmChan_V31(lAlarmHandle)\n"+ hCNetSDK.NET_DVR_GetLastError() +"\n" +hCNetSDK.NET_DVR_GetErrorMsg(null) );hCNetSDK.NET_DVR_Logout(lUserID);hCNetSDK. NET_DVR_Cleanup();return;}//注销用户hCNetSDK.NET_DVR_Logout(lUserID);//释放SDK资源hCNetSDK.NET_DVR_Cleanup();this.cancel();System.gc();//主动回收垃圾}}, 100 * 60 * 1000 );// 这里毫秒}

回调函数

public class Haikangimpl implements HCNetSDK.FMSGCallBack_V31{@Overridepublic boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {String sAlarmType = new String();Date today = new Date();DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String[] sIP = new String[2];
//        sAlarmType = new String("lCommand=0x") +  Integer.toHexString(lCommand);switch (lCommand){case HCNetSDK.COMM_ID_INFO_ALARM: ///身份证信息*/HCNetSDK.NET_DVR_ID_CARD_INFO_ALARM strIDCardInfo = new HCNetSDK.NET_DVR_ID_CARD_INFO_ALARM();strIDCardInfo.write();Pointer pIDCardInfo = strIDCardInfo.getPointer();pIDCardInfo.write(0, pAlarmInfo.getByteArray(0, strIDCardInfo.size()), 0, strIDCardInfo.size());strIDCardInfo.read();sAlarmType = sAlarmType + ":门禁身份证刷卡信息,身份证号码:" + new String(strIDCardInfo.struIDCardCfg.byIDNum).trim() + ",姓名:" +new String(strIDCardInfo.struIDCardCfg.byName).trim() + ",报警主类型:" + strIDCardInfo.dwMajor + ",报警次类型:" + strIDCardInfo.dwMinor;
//                String s =new String(strIDCardInfo.struIDCardCfg.byName).trim();
//                /*System.out.println(sAlarmType);*/
//                String name=new String(strIDCardInfo.struIDCardCfg.byName).trim();//姓名
//                String cardnum=new String(strIDCardInfo.struIDCardCfg.byIDNum).trim();//身份证号码
//                String address=new String(strIDCardInfo.struIDCardCfg.byAddr).trim();//地址
//                String struBirth=new String(String.valueOf(strIDCardInfo.struIDCardCfg.struBirth)).trim();//出生日期
//                System.out.println("name:"+name+"\ncardnum:"+cardnum+"\naddress:"+address);
//                System.out.println(sAlarmType);//身份证图片if (strIDCardInfo.dwPicDataLen > 0) {SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");String newName = sf.format(new Date());FileOutputStream fout;try {String filename ="F:\\硬件集成\\人证合一\\CH-HCNetSDKV6.1.4.42_build20200527_win64\\CH-HCNetSDKV6.1.4.42_build20200527_win64\\Demo示例\\4- Java 开发示例\\3-明眸门禁优化接口\\Test1\\lib\\pic" +newName + "_IDInfoPic.jpg";fout = new FileOutputStream(filename);//将字节写入文件long offset = 0;ByteBuffer buffers = strIDCardInfo.pPicData.getByteBuffer(offset, strIDCardInfo.dwPicDataLen);byte[] bytes = new byte[strIDCardInfo.dwPicDataLen];buffers.rewind();buffers.get(bytes);fout.write(bytes);fout.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//抓拍图片if (strIDCardInfo.dwCapturePicDataLen > 0) {SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");String newName = sf.format(new Date());FileOutputStream fout;try {String filename = "F:\\硬件集成\\人证合一\\CH-HCNetSDKV6.1.4.42_build20200527_win64\\CH-HCNetSDKV6.1.4.42_build20200527_win64\\Demo示例\\4- Java 开发示例\\3-明眸门禁优化接口\\Test1\\lib\\pic"  +newName + "_IDInfoCapturePic.jpg";tFamilyinfo.setYhzp(filename);fout = new FileOutputStream(filename);//将字节写入文件long offset = 0;ByteBuffer buffers = strIDCardInfo.pCapturePicData.getByteBuffer(offset, strIDCardInfo.dwCapturePicDataLen);byte[] bytes = new byte[strIDCardInfo.dwCapturePicDataLen];buffers.rewind();buffers.get(bytes);fout.write(bytes);fout.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}break;case HCNetSDK.COMM_ALARM_ACS: //门禁主机报警信息soutHCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO();strACSInfo.write();Pointer pACSInfo = strACSInfo.getPointer();pACSInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size());strACSInfo.read();sAlarmType = sAlarmType + ":门禁主机报警信息,卡号:"+  new String(strACSInfo.struAcsEventInfo.byCardNo).trim() + ",卡类型:" +strACSInfo.struAcsEventInfo.byCardType + ",报警主类型:" + strACSInfo.dwMajor + ",报警次类型:" + strACSInfo.dwMinor;System.out.println(sAlarmType);System.out.println(strACSInfo.pPicData);System.out.println("上传类型:"+strACSInfo.byPicTransType);if(strACSInfo.dwPicDataLen>0){SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");String newName = sf.format(new Date());FileOutputStream fout;try {String filename = ".\\pic\\"+ new String(pAlarmer.sDeviceIP).trim() +"_byCardNo["+ new String(strACSInfo.struAcsEventInfo.byCardNo).trim() +"_"+ newName + "_Acs.jpg";fout = new FileOutputStream(filename);//将字节写入文件long offset = 0;ByteBuffer buffers = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen);byte [] bytes = new byte[strACSInfo.dwPicDataLen];buffers.rewind();buffers.get(bytes);fout.write(bytes);fout.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}break;case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT://实时人脸抓拍上传HCNetSDK.NET_VCA_FACESNAP_RESULT strFaceSnapInfo = new HCNetSDK.NET_VCA_FACESNAP_RESULT();strFaceSnapInfo.write();Pointer pFaceSnapInfo = strFaceSnapInfo.getPointer();pFaceSnapInfo.write(0, pAlarmInfo.getByteArray(0, strFaceSnapInfo.size()), 0, strFaceSnapInfo.size());strFaceSnapInfo.read();sAlarmType = sAlarmType + ":人脸抓拍上传,人脸评分:" + strFaceSnapInfo.dwFaceScore + ",年龄段:" + strFaceSnapInfo.struFeature.byAgeGroup + ",性别:" + strFaceSnapInfo.struFeature.bySex;SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); //设置日期格式String time = df.format(new Date()); // new Date()为获取当前系统时间//人脸图片写文件try {FileOutputStream small = new FileOutputStream(System.getProperty("user.dir") + "\\pic\\" + time + "small.jpg");FileOutputStream big = new FileOutputStream(System.getProperty("user.dir") + "\\pic\\" + time + "big.jpg");if(strFaceSnapInfo.dwFacePicLen > 0){try {small.write(strFaceSnapInfo.pBuffer1.getByteArray(0, strFaceSnapInfo.dwFacePicLen), 0, strFaceSnapInfo.dwFacePicLen);small.close();} catch (IOException ignored) {}}if(strFaceSnapInfo.dwFacePicLen > 0){try {big.write(strFaceSnapInfo.pBuffer2.getByteArray(0, strFaceSnapInfo.dwBackgroundPicLen), 0, strFaceSnapInfo.dwBackgroundPicLen);big.close();} catch (IOException ignored) {}}} catch (FileNotFoundException ignored) {}break;
//            case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT:
//                    HCNetSDK.NET_DVR_ID_CARD_INFO_ALARM
//                break;default://throw new IllegalStateException("Unexpected value: " + lCommand);System.out.println("Unexpected value: " + lCommand);}return true;}
}

海康威视DS-K56A0人证设备集成(1)相关推荐

  1. 【Android,Kotlin,TFLite】移动设备集成深度学习轻模型TFlite(图像分类篇)

    深度学习.Tensorflow.TFLite.移动设备集成深度学习轻模型TFlite.图像分类篇 Why i create it? 为了创建一个易用且易于集成的TFlite加载库, 所以TFLiteL ...

  2. 格雷希尔GripSeal能为设备集成商做什么?

    大中小型设备集成商在进行项目设计的时候,除了一些核心的电气.机械.动作等,还需要处理各种类型的接口连接问题,特别是做气密测试.性能测试.或是爆裂测试时,需要对这些接口快速封堵进行通水.通油.通制冷剂. ...

  3. 关于MES与设备集成方式及注意项目

    关于MES与设备集成方式及注意项目 一.常见的设备取数方法 随着设备自动化程度的不断提升,如何实现设备数据采集.存储.计算.分析就显得越来越重要. 由于公司的设备非一家采集,存在各种样式的设备,数据采 ...

  4. 智能建筑中高低压配电设备集成监控和管理系统应用分析-李亚俊

    安科瑞 李亚俊 [摘 要]电力智能监控系统是信息时代的产物,反映了人类在高效经济时代对生活质量的不断追求,美好的希望和简化的工作程序.当前,正在建造越来越多的智能建筑物,并且智能建筑物是使用计算机技术 ...

  5. 内网窄带宽环境下的设备集成,如何有效运用流媒体服务器搭建云端视频监控管理平台

    视频监控的实时预览与回看,除了依赖于服务器性能外,还对带宽要求比较高,假设标清视频码流为1M,一个网络环境下有100个监控设备,同时进行视频实时直播和录像,上行带宽占用就>100M,当同时有10 ...

  6. java 设备集成,java 集成 海康 SDK

    1.pom 依赖jna,最好用 3.0.9,其他的少文件 com.sun.jna-local jna-local 3.0.9 使用命令将jar放到依赖库 mvn install:install-fil ...

  7. android车载娱乐系统场景,复合式娱乐综合体,共享设备集成场景化空间-迷你ktv官网...

    在科技的推动下,我们正在进入一个泛娱乐的时代. 共享娱乐空间场景 在这个时代,谁能把科技与娱乐结合起来,甚至发展出一种新的方式,任何人都有可能站起来赢.在一个完整的工业生态系统中,适当的甚至是独特的商 ...

  8. 老龄人口公交出行_在设计技术时要考虑到老年人口

    老龄人口公交出行 Abstract - The senior user base, which we will define as sixty-five years or older, is ofte ...

  9. 海康威视人脸识别设备对接(一)环境搭建

    需要对接海康威视人脸识别设备,这里选择明眸门禁,还有其他的没研究过 打开海康威视开放平台 https://open.hikvision.com/ 选择开放体系,一直选择到设备集成SDK 这里我选择设备 ...

最新文章

  1. matlab生产正弦mif文件
  2. ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
  3. “稳定”凸包----poj1228
  4. android 仿ios tabs,React Native兼容iOS Android的TabBar
  5. PHP file_get_contents 设置超时时间
  6. 面向对象阶段个人总结
  7. C++中用frugally-deep调用keras的模型并进行预测
  8. matlab weibpdf函数,matlab建模常用函数
  9. 3d页游开发_大翅膀等于页游风?天谕手游扭转印象,阿云嘎同款黑翅膀最有排面...
  10. 基于centos6.5 hbase 集群搭建
  11. 沈伟华:图神经网络的三连问
  12. git:关联github和本地仓库
  13. 双线程交替修改变量 条件变量
  14. NumPy 简单应用
  15. declspec(dllexport)和declspec(dllexport)的实际应用
  16. (生物信息学)R语言与统计学入门(九)—— 单因素cox回归分析
  17. ps污点修复画笔用法和案例:去除脸上痘痘
  18. EPOCH, BATCH, INTERATION
  19. 浅谈Oracle RAC --集群管理软件GI
  20. Ajax传递数组对象

热门文章

  1. Python -- 图像的手绘风格
  2. Python之数据结构
  3. 平流式沉淀池流量计算_平流沉淀池计算公式 高版本格式
  4. 深度学习pytorch常见编程技巧
  5. uni-app使用i18n实现多语言的切换及国际化开发
  6. 菏泽话务员机器人方案_电话机器人真能抵得上五个电销话务员?
  7. 在网页中画ICON图标
  8. 东进语音卡 java_东进语音卡的声音文件格式
  9. 基于熵测度的股票收益非对称性因子研究
  10. 【Apollo】支持@ConfigurationProperties动态刷新