实时人流量监测——海康威视sdk初体验
本文主要是博主使用海康SDK进行人流量统计的摸索过程,在这里简单记录一下。
查询文档,能实现人流量统计大概有两种方式,报警或者监听,

这边我选择了监听方式,NET_DVR_StartListen_V30 这个接口,启动监听,它可以接收设备主动上传的报警信息并且支持多线程。

我们需要编写一个回调函数来接受数据(处理业务逻辑),

NET_DVR_ALARMER 是一个报警信息结构体,这边需要 COMM_ALARM_PDC 这个类型的数据,其实是一个宏,用来判断接受数据的类型,这里对应的结构体为NET_DVR_PDC_ALRAM_INFO 具体参数可以查阅文档。到这里这里大概对于SDK的调用有个了解。那么开始动手。
首先创建一个人流量demo ,导入SDK必要头文件以及相应的资源文件。

(ps:这里很多dll并不需要)
直接上代码:
1 #include <stdio.h>
2 #include <iostream>
3 #include "HCNetSDK.h"
4 using namespace std;
5
6 void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER* pAlarmer, char* pAlarmInfo, DWORD dwBufLen, void*pUser)
7 {
8
9 cout << "进入回调" << endl;//判断一下没有进入回调 记得在设备那边设置回调的地址和端口不然会无法进入回调
10 NET_DVR_PDC_ALRAM_INFO struPdcALramInfo;//数据结构体
11 memcpy(&struPdcALramInfo, pAlarmInfo, sizeof(NET_DVR_PDC_ALRAM_INFO));
12 switch (lCommand)//消息类型
13 {
14 cout << lCommand << endl;
15 case COMM_ALARM_PDC:
16 {
17 if (struPdcALramInfo.byMode == 0)
18 {
19 //测试显示数据
20 cout << "当前时间:" << struPdcALramInfo.uStatModeParam.struStatFrame.dwRelativeTime << endl;
21 cout << "进来人数:" << struPdcALramInfo.dwEnterNum << endl;
22 cout << "离开人数" << struPdcALramInfo.dwLeaveNum << endl;
23 break;
24 }
25
26 }
27 default:break;
28 }
29 }
30 void main() {
31
32 NET_DVR_Init();// 初始化
33 NET_DVR_SetConnectTime(2000, 1);//设置连接时间与重连时间
34 NET_DVR_SetReconnect(10000, true);
35 LONG lUserID;// 注册设备
36 NET_DVR_DEVICEINFO_V30 struDeviceInfo;
37 char ip[32] = "192.168.x.64";//设备的IP地址 需要和电脑端ip在同一个网段
38 char user[32] = "xxx";//登录名
39 char userPass[32] = "xxx";//密码 不需要多说了吧
40
41 lUserID = NET_DVR_Login_V30(ip, 8000, user, userPass, &struDeviceInfo);//这里端口号为8000
42 if (lUserID < 0)
43 {
44 printf("Login error, %d\n", NET_DVR_GetLastError());//如果登录失败,这里会有原因的,可查看文档对症下药
45 NET_DVR_Cleanup();
46 return;
47 }
48 else
49 {
50 cout<<"Login success lUserID:"<< lUserID <<endl;
51 }
52
53 char localIP[16] = "192.168.x.60";//本地的Ip 设置回调用的
54
55 NET_DVR_NETCFG_V30 myNETCFG;//配置报警主机和端口
56 memcpy(&(myNETCFG.struAlarmHostIpAddr.sIpV4), localIP, sizeof(myNETCFG.struAlarmHostIpAddr.sIpV4));//内存拷贝
57 cout << myNETCFG.struAlarmHostIpAddr.sIpV4 << endl;//可以忽略
58 myNETCFG.wAlarmHostIpPort =8000;
59 BOOL isSuccess = NET_DVR_SetDVRMessageCallBack_V30(MessageCallback, &myNETCFG);//设置报警回调函数
60 if (isSuccess)
61 {
62 cout << "设置回调成功" << endl;
63 }
64 LONG lHandle;//启用监听
65 lHandle = NET_DVR_StartListen_V30(NULL, 8000, MessageCallback, NULL);
66 if (lHandle < 0)
67 {
68 printf("NET_DVR_StartListen_V30 error, %d\n", NET_DVR_GetLastError());
69 NET_DVR_Logout(lUserID);
70 NET_DVR_Cleanup();
71 return;
72 }
73 Sleep(5000);//这里是为了测试所以写了个休眠卡主线程也可以理解为监听时长
74 if (!NET_DVR_StopListen_V30(lHandle))//结束监听
75 {
76 printf("NET_DVR_StopListen_V30 error, %d\n", NET_DVR_GetLastError());
77 NET_DVR_Logout(lUserID);
78 NET_DVR_Cleanup();
79 return;
80 }
81 NET_DVR_Logout(lUserID);//注销用户
82 NET_DVR_Cleanup(); //释放 SDK 资源
83 return;
84 }

实时人流量监测——海康威视sdk初体验的更多相关文章
- OPhone SDK初体验
OPhone SDK初体验 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 背景说明 中国伟大的垄断龙头,世界上也是顶尖的中移动最 ...
- nRF51822 SDK初体验
作为两家BLE芯片大厂之一,nordic不像TI那么开放,nordic的开发资料是很难找的. 今天有幸得到nordic的BLE芯片nRF51822的SDK,看了一下. 首先,nordic号称协议栈 ...
- 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验
[阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人 初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...
- Apache Beam入门及Java SDK开发初体验
1 什么是Apache Beam Apache Beam是一个开源的统一的大数据编程模型,它本身并不提供执行引擎,而是支持各种平台如GCP Dataflow.Spark.Flink等.通过Apache ...
- Microsoft IoT Starter Kit 开发初体验
1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...
- 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- 痞子衡嵌入式:MCUXpresso Config Tools初体验(Pins, Clocks, Peripherals)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso Config Tools三大件(Pins, Clocks, Peripherals). 不知道大家有没有这样的感受 ...
- 【微服务】Nacos初体验
SpringCloud - Nacos初体验 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...
随机推荐
- CodeForces - 1228D (暴力+思维+乱搞)
题意 https://vjudge.net/problem/CodeForces-1228D 有一个n个顶点m条边的无向图,在一对顶点中最多有一条边. 设v1,v2是两个不相交的非空子集,当满足以下条 ...
- HDU 4729 An Easy Problem for Elfness(树链剖分边权+二分)
题意 链接:https://cn.vjudge.net/problem/HDU-4729 给你n个点,然你求两个点s和t之间的最大流.而且你有一定的钱k,可以进行两种操作 1.在任意连个点之间建立一个 ...
- SpringBoot+Mybatis多模块项目搭建教程
一.前言 框架为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 1.开发工具及系统环境 IDE:IntelliJ IDEA 2018.2 系 ...
- 微信小程序picker重写,精确到时分秒
https://developers.weixin.qq.com/miniprogram/dev/component/picker.html 微信小程序提供的picker组件,只精确到分,项目中需要秒 ...
- 【BZOJ4816】[SDOI2017] 数字表格(莫比乌斯反演)
点此看题面 大致题意: 求\(\prod_{i=1}^n\prod_{j=1}^mf(gcd(i,j))\). 推式子 首先,按照套路我们枚举\(gcd\),得到: \[\prod_{d=1}^{mi ...
- Dockerfile命令整理
通过Dockerfile只做Docker镜像时,需要用到Dockerfile的命令,收集整理如下,以便后续翻阅参考. FROM 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么 ...
- python接口自动化3-发送post及其他请求
前言 发过get请求相信学习post请求也很快学会,无非就是多了传参时的类型与参数格式.在我常见的post请求中用到最多的是json格式,但也有用其它,下面将介绍常用的参数类型格式. 一.Post请求 ...
- 联邦学习PySyft
Steps involved in the Federated Learning Approach The mobile devices download the global ML model Da ...
- Python 文件readlines()方法
原文连接:https://www.runoob.com/python/file-readlines.html readlines()方法用于读取所有行(直到结束符EOF)并返回列表,该列表可以由pyt ...
- vuex 源码分析(五) action 详解
action类似于mutation,不同的是Action提交的是mutation,而不是直接变更状态,而且action里可以包含任意异步操作,每个mutation的参数1是一个对象,可以包含如下六个属 ...