海康威视sdk初体验--人流量统计

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

海康威视sdk初体验--人流量统计_第1张图片

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

海康威视sdk初体验--人流量统计_第2张图片
我们需要编写一个回调函数来接受数据(处理业务逻辑),
海康威视sdk初体验--人流量统计_第3张图片
NET_DVR_ALARMER 是一个报警信息结构体,这边需要 COMM_ALARM_PDC 这个类型的数据,其实是一个宏,用来判断接受数据的类型,这里对应的结构体为NET_DVR_PDC_ALRAM_INFO 具体参数可以查阅文档。到这里这里大概对于SDK的调用有个了解。那么开始动手。
首先创建一个人流量demo ,导入SDK必要头文件以及相应的资源文件。
海康威视sdk初体验--人流量统计_第4张图片
ps:这里很多dll并不需要。

直接上代码:

#include 
#include 
#include "HCNetSDK.h"
using namespace std;

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER* pAlarmer, char* pAlarmInfo, DWORD dwBufLen, void*pUser)
{ 

cout << "进入回调" << endl;//判断一下没有进入回调 记得在设备那边设置回调的地址和端口不然会无法进入回调
NET_DVR_PDC_ALRAM_INFO struPdcALramInfo;//数据结构体
memcpy(&struPdcALramInfo, pAlarmInfo, sizeof(NET_DVR_PDC_ALRAM_INFO));
switch (lCommand)//消息类型 
{
cout << lCommand << endl;
case COMM_ALARM_PDC:
{ 
if (struPdcALramInfo.byMode == 0)
{
//测试显示数据 
cout << "当前时间:" << struPdcALramInfo.uStatModeParam.struStatFrame.dwRelativeTime << endl;
cout << "进来人数:" << struPdcALramInfo.dwEnterNum << endl;
cout << "离开人数" << struPdcALramInfo.dwLeaveNum << endl;
break;
}
} 
default:break; 
}
}
void main() {
NET_DVR_Init();// 初始化 
NET_DVR_SetConnectTime(2000, 1);//设置连接时间与重连时间 
NET_DVR_SetReconnect(10000, true);
LONG lUserID;// 注册设备
NET_DVR_DEVICEINFO_V30 struDeviceInfo;
char ip[32] = "192.168.1.64";//设备的IP地址 需要和电脑端ip在同一个网段
char user[32] = "xxx";//登录名
char userPass[32] = "xxx";//密码 不需要多说了吧 

lUserID = NET_DVR_Login_V30(ip, 8000, user, userPass, &struDeviceInfo);//这里端口号为8000
if (lUserID < 0)
{
printf("Login error, %d\n", NET_DVR_GetLastError());//如果登录失败,这里会有原因的,可查看文档对症下药
NET_DVR_Cleanup();
return;
}
else
{
cout<<"Login success lUserID:"<< lUserID <

结果
海康威视sdk初体验--人流量统计_第5张图片

你可能感兴趣的:(C/C++,C/C++,海康威视,SDK)