实现设备抓拍功能之前,需要完成设备初始化,注册,监听和布防的操作,详见CSDNhttps://mp.csdn.net/mp_blog/creation/editor/121543529

创建类FMSGCallBack_V30 并实现FMSGCallBack

public class FMSGCallBack_V30 implements HCNetSDK.FMSGCallBack {

实现抽象方法

    @Overridepublic void invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {try {AlarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}

创建AlarmDataHandle方法 并实现人脸 车辆抓拍

public void AlarmDataHandle(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) throws UnsupportedEncodingException {

门禁设备抓拍

if (lCommand == HCNetSDK.COMM_ALARM_ACS) {//门禁事件HCNetSDK.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();if (strACSInfo.dwPicDataLen > 0) { //判断是否刷脸try {long offset = 0;ByteBuffer bytes = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen);BASE64Encoder encoder = new BASE64Encoder();String image = encoder.encode(bytes).replaceAll("\r|\n", "");float WD = 0;boolean isLocal = isLocal(deviId);if(strACSInfo.byAcsEventInfoExtendV20 == 1) {Pointer info = strACSInfo.pAcsEventInfoExtendV20;HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20 wendu = new HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20();wendu.write();Pointer pWendu = wendu.getPointer();pWendu.write(0, info.getByteArray(0, wendu.size()), 0, wendu.size());wendu.read();log.info("温度"+wendu.fCurrTemperature);}} catch (Exception e) {e.printStackTrace();}}}

人脸设备抓拍

if (lCommand == HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT) {//人脸抓拍HCNetSDK.NET_VCA_FACESNAP_RESULT strFaceSnapInfo = new HCNetSDK.NET_VCA_FACESNAP_RESULT();SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式//String time = df.format(new Date());// new Date()为获取当前系统时间String ip = new String(pAlarmer.sDeviceIP).trim();try {strFaceSnapInfo.write();Pointer pFaceSnapInfo = strFaceSnapInfo.getPointer();pFaceSnapInfo.write(0, pAlarmInfo.getByteArray(0, strFaceSnapInfo.size()), 0, strFaceSnapInfo.size());strFaceSnapInfo.read();long offset = 0;byte[] bytesSmall = strFaceSnapInfo.pBuffer1.getByteArray(offset, strFaceSnapInfo.dwFacePicLen);//小图byte[] bytesBig = strFaceSnapInfo.pBuffer2.getByteArray(offset, strFaceSnapInfo.dwBackgroundPicLen);//大图BASE64Encoder encoder = new BASE64Encoder();String imageBig = encoder.encode(bytesBig);String imageSmall = encoder.encode(bytesSmall);log.info("imageBig" + imageBig + "=====imageSmall " + imageSmall );//输出图片信息 } catch (Exception e) {e.printStackTrace();}}

车辆抓拍

if (lCommand == HCNetSDK.COMM_ITS_PLATE_RESULT) {//车辆事件DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");HCNetSDK.NET_ITS_PLATE_RESULT strItsPlateResult = new HCNetSDK.NET_ITS_PLATE_RESULT();strItsPlateResult.write();Pointer pItsPlateInfo = strItsPlateResult.getPointer();pItsPlateInfo.write(0, pAlarmInfo.getByteArray(0, strItsPlateResult.size()), 0, strItsPlateResult.size());strItsPlateResult.read();String srt = null;String ip = new String(pAlarmer.sDeviceIP).trim();String deviId = ipDeviIdMap.get(ip);try {srt = new String(strItsPlateResult.struPlateInfo.sLicense, "GBK");String type = CarType.getCarType(strItsPlateResult.byVehicleType + "".trim()));//车辆类型String plateNumber = srt.substring(1, srt.length()).trim();//车牌号码String byCountry = srt.substring(1, 2).trim();//省份String byColor = srt.substring(0, 1).trim();//车牌颜色String cameraIp = new String(pAlarmer.sDeviceIP).trim();//ipString picTime = dateFormat.format(new Date());//当前时间} catch (UnsupportedEncodingException e) {e.printStackTrace();}try {for (int i = 0; i < strItsPlateResult.dwPicNum; i++) {if (strItsPlateResult.struPicInfo[i].dwDataLen > 0) {if (strItsPlateResult.struPicInfo[i].byType == 1) {//车辆场景图片//将字节写入long offset = 0;ByteBuffer buffers = strItsPlateResult.struPicInfo[i].pBuffer.getByteBuffer(offset, strItsPlateResult.struPicInfo[i].dwDataLen);byte[] bytes = new byte[strItsPlateResult.struPicInfo[i].dwDataLen];buffers.rewind();buffers.get(bytes);BASE64Encoder encoder = new BASE64Encoder();String imageBig = encoder.encode(bytes);//车辆场景图片log.info("imageBig ========="+imageBig );} else if (strItsPlateResult.struPicInfo[i].byType == 0) {//车牌图片//将字节写入long offset = 0;ByteBuffer buffers = strItsPlateResult.struPicInfo[i].pBuffer.getByteBuffer(offset, strItsPlateResult.struPicInfo[i].dwDataLen);byte[] bytes = new byte[strItsPlateResult.struPicInfo[i].dwDataLen];buffers.rewind();buffers.get(bytes);BASE64Encoder encoder = new BASE64Encoder();String imageSmall = encoder.encode(bytes);log.info("imageSmall========="+imageSmall);//车牌图}}}}catch (Exception e){e.printStackTrace();}}

海康威视设备 JAVA SDK SpringBoot实现人脸、车辆、门禁图片抓取相关推荐

  1. 人脸服务器如何与门禁系统对接,人脸识别门禁系统终端设备接口说明

    1.上传识别结果 人脸识别门禁系统设备识别后把识别结果上传到服务器(单包数据数量小于5条) (一) 人脸识别门禁系统请求(设备->服务器): 1. 人脸识别门禁系统请求命令: 0x19 2. 人 ...

  2. 海康威视 设备网络SDK

    海康威视 设备网络SDK 运行clientDemo时,报 java.lang.UnsatisfiedLinkError: Unable to load library 'PlayCtrl': ???? ...

  3. 海康威视运行Java SDK

    海康威视运行Java SDK 1. SDK下载 2. 安装海康威视设备 3. 导入项目 4. 放入dll文件 4.1 放入dll文件前项目 4.2 按官方说明文档,将dll放入 5. 运行 6. 解决 ...

  4. java 人脸比对_java ArcFace 2.0,java SDK使用、人脸识别-抽取人脸特征并做比对

    java人脸识别 虹软ArcFace 2.0,java SDK使用.人脸识别-抽取人脸特征并做比对 人脸检测 人脸跟踪 人脸属性检测(性别.年龄) 人脸三维角度检测 人脸对比 本文使用到的SDK为本人 ...

  5. 海康威视人脸识别门禁系统对接

    海康威视是一家专业的安防公司,提供各种安防产品和解决方案.人脸识别门禁系统是海康威视提供的一种用于对人脸进行识别的门禁系统.它可以用来确保门禁的安全性,并且可以通过摄像头捕捉到的人脸图像进行人脸识别. ...

  6. 小区人脸识别门禁系统云平台需求分析文档

    小区人脸识别门禁系统云平台需求分析文档 系统功能(平台管理端后台,物业管理端后台) 1.小区人脸识别门禁系统云平台,支持全国各地不同的物业公司在线注册账号,不同物业公司管理旗下多个小区的云平台管理系统 ...

  7. 新手树莓派3B——人脸识别门禁管理系统

    文章目录 前言 一.怎么用树莓派设计人脸识别门禁系统? 二.树莓派系统的安装 三.远程连接 四.人脸识别 总结 前言 树莓派,自问世以来,其"麻雀虽小,五脏俱全"的微型电脑特征让无 ...

  8. 人脸识别门禁系统:基于Android的人脸识别门禁系统 毕业设计完整代码详细教程

    完整代码:https://download.csdn.net/download/qq_38735017/87382371 一.研究目的 传统的门禁系统以钥匙作为验证手段,便捷程度低,丢失钥匙之后会导致 ...

  9. 人脸识别门禁,守护社区安全的第一道防线

    人工智能技术不断地发展使人脸识别应用越来越广泛,在智慧社区安防中,人脸识别门禁成为安全保护的第一道防线.人脸识别技术是基于人的脸部特征信息进行身份识别的生物识别技术.主要涉及四个方面的功能:对获取的原 ...

最新文章

  1. python 图像分割_Python怎么实现图片分割?
  2. 前端面试之Vue向技巧总结
  3. PHP 和 ASP.NET的优势和弱点
  4. 只需要30秒就可以做的30件事情:你会选择哪一件来改变世界?
  5. LeetCode 1825. 求出 MK 平均值(set + queue)
  6. SpringBoot私人学习笔记
  7. c mysql对时间加减_25.2.10. 日期和时间值的C API处理
  8. DXperience-6.2.4 破解
  9. html论坛注册代码,Discuz!论坛代码大全和HTML代码大全 | 穆小刚营销博客
  10. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! taoism@1.0.0 dev: `webpack-dev-server --inline --
  11. 【OR】YALMIP 整数规划
  12. 类文件解析及引申的一系列仇怨
  13. vue后端模板、vue登录界面、注册界面(带短信验证码)模板
  14. 心电电路算法滤波_心电信号噪声的数字滤波研究
  15. 期货交易:2018-07-30至2018-07-31【AP901【1V】【1100】】
  16. 离家、失恋、职场碰壁,小伙如何守住大城市的“一张床”?
  17. 计算机技术电子出版参考文献,参考文献规范
  18. obs显示无法连接到服务器,obs链接不到服务器
  19. python登录微信pc版_微信PC版2.9.0测试版更新:新增小程序面板
  20. Delta3D(9)教程:添加消息发送和可激活体

热门文章

  1. 电源常识-纹波-EMI
  2. matlab中用高斯-赛德尔(Gauss-Seidel)迭代法解线性方程组
  3. 工具-Sublist3r使用说明
  4. 半导体物理实验 01 - | 晶体结构构建、仿真与分析
  5. 南开大学统计与数据科学院夏令营
  6. Acrel-2000电力监控系统在生物诊断试剂浙江迪安诊断的应用
  7. Kubuntu 15.10 高清截图欣赏
  8. 如何优雅的抄袭代码?天下代码一大抄,这才是正确的姿势
  9. 安装Socat安装RabbitMQ
  10. 基于SOCAT工具的UDP消息通信