1、智能交通设备开发说明文档智能交通设备开发说明文档一、产品概述智能交通设备主要用在交通卡口、闯红灯等的车辆信息的分析及记录。在安装好智能设备之后需要根据实际的应用场景对智能交通设备场景,待检测物体,及事件规则进行配置。在完成配置后,设备会根据配置,进行图片抓拍,并分析检测物体信息。用户可通过订阅智能报警事件,获得抓拍到的图片及物体信息,具体代码实现见下文说明。二、产品方案示意图图2.1 三、智能交通配置说明及相关SDK接口说明3.1智能交通配置SDK接口:3.1.1 获取智能交通设备配置信息接口1) BOOL CALL_METHOD CLIENT_GetNewDevConfig(LONG lLo
2、ginID, char* szCommand, int nChannelID, char* szOutBuffer, DWORD dwOutBufferSize, int *error, int waittime);函数说明:获取配置,按照字符串格式,各个字符串包含的信息由CLIENT_ParseData解析。参数说明:inlLoginID,CLIENT_Login的返回值 inszCommand,命令参数,见CLIENT_ParseData命令参数说明。innChannelID,通道号 outszOutBuffer,输出缓冲, outdwOutBufferSize,输出缓冲大小 outerr
3、or,错误码 0成功1失败 2数据不合法3暂时无法设置4没有权限inwaittime,等待超时时间2) BOOL CLIENT_ParseData(char *szCommand, char *szInBuffer, LPVOID lpOutBuffer, DWORD dwOutBufferSize, void* pReserved);函数说明:此接口配合CLIENT_GetNewDevConfig使用,在使用CLIENT_GetNewDevConfig获取字符串配置信息后,使用此接口从配置信息中提取想要的信息。 参数说明:inszCommand,命令参数。命令参数相应结构体CFG_CMD_A
4、NALYSEGLOBAL智能交通设备场景配置,对应结构体CFG_ANALYSEGLOBAL_INFOCFG_CMD_ANALYSEMODULE待检测物体模块配置,对应结构体CFG_ANALYSEMODULES_INFOCFG_CMD_ANALYSERULE智能交通设备事件规则配置,对应结构体CFG_ANALYSERULES_INFOinszInBuffer,输入缓冲,字符配置缓冲。outlpOutBuffer ,输出缓冲,交通结构体类型 outdwOutBufferSize ,输出缓冲的大小 inpReserved,保留参数3.1.2设置智能交通设备配置信息接口1) BOOL CLIENT_P
5、acketData(char *szCommand, LPVOID lpInBuffer, DWORD dwInBufferSize, char *szOutBuffer, DWORD dwOutBufferSize);函数说明:此接口配合CLIENT_SetNewDevConfig使用,使用CLIENT_PacketData后,将打包的信息通过CLIENT_SetNewDevConfig设置到设备上。 参数说明:outszCommand 命令参数,参见CLIENT_ParseData中表格 inlpInBuffer 输入缓冲,结构体类型参见CLIENT_ParseData中表格 indwIn
6、BufferSize 输入缓冲大小 outszOutBuffer 输出缓冲 indwOutBufferSize 输出缓冲大小2)BOOL CLIENT_SetNewDevConfig(LONG lLoginID, char* szCommand, int nChannelID, char* szInBuffer, DWORD dwInBufferSize, int *error, int *restart, int waittime=500);函数说明:设置配置,按照字符串格式,各个字符串包含的信息由CLIENT_PacketData组包。参数说明:inlLoginID CLIENT_Logi
7、n的返回值 inszCommand,请参考CLIENT_ParseData中的说明。innChannelID,通道号。inszInBuffer,输入缓冲。indwInBufferSize,输入缓冲大小。outerror,错误码。0成功1失败 2数据不合法3暂时无法设置4没有权限outrestart,配置设置后是否需要重启设备,1表示需要重启,0表示不需要重启。inwaittime,等待超时时间。3.1.3 获取智能交通设备能力集信息接口BOOL CLIENT_QueryNewSystemInfo(LONG lLoginID, char* szCommand, int nChannelID, c
8、har* szOutBuffer, DWORD dwOutBufferSize, int *error, int waittime=1000);函数说明:查询系统能力信息,按字符串格式inlLoginID,CLIENT_Login的返回值。inszCommand,查询能力类型。(CFG_CAP_CMD_VIDEOANALYSE, 智能交通设备能力集,对应结构体为CFG_CAP_ANALYSE_INFO)innChannelID,通道号。 outszOutBuffer,接收的能力集字符串缓冲区。indwOutBufferSize,接收的总字节数(单位字节)。outerror,错误号。 inwai
9、ttime,等待时间。3.2 智能交通配置具体说明智能交通配置分为三部分:智能交通场景配置,待检测物体配置,事件规则配置。3.2.1 智能交通场景配置: 智能交通场景配置参数包括摄像头高度,摄像头水平距,近景点位置,远景点位置,近景点距摄像头水平距,远景点距摄像头水平距及车道线,具体描述如下:如图3.1所示,摄像头高度,是指摄像头离地面的垂直距离,摄像头水平距是指摄像头垂直线到摄像头视野区域中心点的距离。近景点是指摄像头抓拍的图片的底部中心位置,一般取值为(4096,8192),远近点是指图片的中心位置,一般取值为(4096,4096)。近景点距摄像头水平距是指近景点在实景场景中对应位置到摄像
10、头垂直线的水平距离,远景点距摄像头水平距是指远景点在实景场景中对应位置到摄像头垂直线的水平距离。图3.1车道线是根据摄像头实际拍摄到的图片中的车道得到的车道线信息,如图3.2所示(车道线的相关坐标点是图片上的对应像素点位置)。车道号由用户自己定义。车道方向是指当前车道上车辆行驶的方向。图3.2获取智能交通设备场景配置信息代码示例: int nErr = 0; char szOutBuffer32*1024 = 0; CFG_ANALYSEGLOBAL_INFO stuAnalysGlobalInfo = 0; / get global info BOOL bSuccess = CLIENT_G
11、etNewDevConfig(m_lLoginID, CFG_CMD_ANALYSEGLOBAL, nChannel, szOutBuffer, 32*1024, &nErr); if (bSuccess) int nRetLen = 0; BOOL bRet = CLIENT_ParseData(CFG_CMD_ANALYSEGLOBAL, szOutBuffer, (char*)&stuAnalysGlobalInfo, sizeof(CFG_ANALYSEGLOBAL_INFO), &nRetLen); if (bRet = FALSE) MessageBox(Parser data e
12、rror, Prompt); return FALSE; /if(bSuccess) else MessageBox(Get TrafficScene failed, Prompt); return FALSE; 获取智能交通设备场景配置信息代码示例:int nRestart = 0; int nError = 0; char szOutBuffer32*1024 = 0;CFG_ANALYSEGLOBAL_INFO stuAnalysGlobalInfo = 0; / save global info BOOL bRet = CLIENT_PacketData(CFG_CMD_ANALYSE
13、GLOBAL, (char*)&stuAnalysGlobalInfo, sizeof(CFG_ANALYSEGLOBAL_INFO), szOutBuffer, 32*1024); if (bRet = FALSE) MessageBox(Pack data failed!), Prompt); else BOOL bSuccess = CLIENT_SetNewDevConfig(m_lLoginID, CFG_CMD_ANALYSEGLOBAL, nChannelId, szOutBuffer, 32*1024, &nError, &nRestart, 3000); if (bSucce
14、ss) MessageBox(Save successfully!, Prompt); else MessageBox(Save TrafficScene failed!), Prompt); 智能分析设备配置演示程序中交通场景配置界面展示:车道线设置界面展示:3.2.2 检测物体模块配置 待检测物体模块配置参数包括待检测物体类型,检测区域,跟踪区域,待检测物体的最大,最小尺寸,具体描述如下:带检测物体类型由当前设备的能力集决定,智能交通设备通常支持对车辆、车牌等物体的检测。检测区域,跟踪区域是指在摄像头实际拍摄到的图片中画出的检测区和跟踪区的位置如图3.3所示(这两个区域坐标点是图片上的对应
15、像素点位置)。图3.3待检测的物体最小,最大尺寸也是指物体在图片中的呈现的最小最大尺寸,以像素为单位。在待检测物体是车牌时,有一个最佳检测尺寸范围:长(50 240), 宽(10 100)。获取设备能力集代码示例: CFG_CAP_ANALYSE_INFO stuChannelCap = 0; char szOutBuffer32*1024 = 0; int nErr = 0; BOOL bSuccess = CLIENT_QueryNewSystemInfo(m_lLoginID, CFG_CAP_CMD_VIDEOANALYSE, nChannel, szOutBuffer, 32*102
16、4, &nErr); if (bSuccess) int nRetLen = 0; BOOL bRet = CLIENT_ParseData(CFG_CAP_CMD_VIDEOANALYSE, szOutBuffer, (char*)&stuChannelCap, sizeof(CFG_CAP_ANALYSE_INFO), &nRetLen); if (bRet = FALSE) MessageBox(ConvertString(Parser data error), ConvertString(Prompt); return; else MessageBox(ConvertString(ge
17、t device cap failed!), ConvertString(Prompt); 获取智能交通设备带检测物体模块配置信息代码示例: int nErr = 0; char szOutBuffer32*1024 = 0; CFG_ANALYSEMODULES_INFO stuAnalysModuleInfo = 0; BOOL bSuccess = CLIENT_GetNewDevConfig(m_lLoginID, CFG_CMD_ANALYSEMODULE, nChannel, szOutBuffer, 32*1024, &nErr); if (bSuccess) int nRetL
18、en = 0; BOOL bRet = CLIENT_ParseData(CFG_CMD_ANALYSEMODULE, szOutBuffer, (char*)&stuAnalysModuleInfo, sizeof(CFG_ANALYSEMODULES_INFO), &nRetLen); if (bRet = FALSE) MessageBox(Parser data error, Prompt); return FALSE; /if(bSuccess) else MessageBox(Get Module info failed!, Prompt); return FALSE; 设置智能交
19、通设备带检测物体模块配置信息代码示例: int nRestart = 0; int nError = 0; char szOutBuffer32*1024 = 0; CFG_ANALYSEMODULES_INFO stuAnalysModuleInfo = 0; BOOL bRet = CLIENT_PacketData(CFG_CMD_ANALYSEMODULE, (char*)&stuAnalysModuleInfo, sizeof(CFG_ANALYSEMODULES_INFO), szOutBuffer, 32*1024); if (bRet = FALSE) MessageBox(P
20、ack data failed!, Prompt); else BOOL bSuccess = CLIENT_SetNewDevConfig(m_lLoginID, CFG_CMD_ANALYSEMODULE, nChannelId, szOutBuffer, 32*1024, &nError, &nRestart, 3000); if (bSuccess) MessageBox(Save successfully!, Prompt); else MessageBox(Save Module info failed!, Prompt); 智能分析设备配置演示程序中检测物体模块配置界面展示:检测
21、区及跟踪区设置界面展示:3.2.3 事件规则配置事件规则是对触发某个事件报警条件的描述,当智能设备检测到符合某个事件规则的情况发生时就会触发事件报警,并记录事件信息。一个智能交通设备上的一个事件可以对应多个规则,每个设备能够支持的规则数是有限的,可通过设备能力集获得设备支持的最大规则数。 目前以交通卡口事件规则为例,对规则参数进行说明,交通卡口事件规则参数包括:规则名,规则使能,检测物体类型,速度上限,速度下限,车道号,车道线,检测线,具体说明如下:规则名,是指当前规则的名字,不能与当前设备的其他规则重名。规则使能,是指当前规则是否生效。检测物体类型,是指当前规则能够检测的物体的类型,此处设置
22、的类型必须是设备能力集中支持的物体类型。速度上限,速度下限,是检测物体的运动速度上下限,单位:千米/小时。车道号,是指当前规则所适用的车道。车道线,是指当前规则所适用的车道位置,如下图所示,是指在摄像头实际拍摄到的图片中的位置,此处的车道线与场景配置中的车道不会相互影响。检测线,是指物体触发报警的位置,如图3.4所示,是指在摄像头实际拍摄到的图片中的位置。图3.4获取智能设备能力集代码示例见3.2.2。获取智能设备规则配置信息代码示例:int nErr = 0; char szOutBuffer32*1024 = 0; CFG_ANALYSERULES_INFO stuAnalysRuleIn
23、fo = 0; / nMaxRuleStructSize指设备支持的规则对应的最大规则结构体大小 / nMaxRuleNum指设备支持的最大规则数 int nBufLen = (sizeof(CFG_RULE_INFO) + nMaxRuleStructSize) * nMaxRuleNum; stuAnalysRuleInfo.pRuleBuf = new charnBufLen; stuAnalysRuleInfo.nRuleLen = nBufLen; BOOL bSuccess = CLIENT_GetNewDevConfig(m_lLoginID, CFG_CMD_ANALYSERU
24、LE, nChannel, szOutBuffer, 32*1024, &nErr, 2000); if (bSuccess) int nRetLen = 0; BOOL bRet = CLIENT_ParseData(CFG_CMD_ANALYSERULE, szOutBuffer, (char*)&stuAnalysRuleInfo, sizeof(CFG_ANALYSERULES_INFO), &nRetLen); if (bRet = FALSE) MessageBox(Parser data error, Prompt); return FALSE; /if(bSuccess) el
25、se MessageBox(Get Rule info error!, Prompt); return FALSE; 设置智能设备规则配置信息代码示例:int nRestart = 0; int nError = 0; char szOutBuffer32*1024 = 0; CFG_ANALYSERULES_INFO stuAnalysRuleInfo = 0; BOOL bRet = CLIENT_PacketData(CFG_CMD_ANALYSERULE, (char*)&stuAnalysRuleInfo, sizeof(CFG_ANALYSERULES_INFO), szOutBu
26、ffer, 32*1024); if (bRet = FALSE) MessageBox(Pack data failed!, Prompt); else BOOL bSuccess = CLIENT_SetNewDevConfig(m_lLoginID, CFG_CMD_ANALYSERULE, nChannelId, szOutBuffer, 32*1024, &nError, &nRestart, 3000); if (bSuccess) MessageBox(Save successfully!, Prompt); else MessageBox(Save Rule info fail
27、ed!, Prompt); 智能分析设备配置演示程序中事件规则配置界面展示:具体规则信息界面展示:四、智能交通信息实时上传记相关SDK接口说明4.1 智能交通信息实时上传SDK接口4.1.1 智能交通设备实时上传接口说明LONG CLIENT_RealLoadPicture(LONG lLoginID, int nChannelID, DWORD dwAlarmType, fAnalyzerDataCallBack cbAnalyzerData, DWORD dwUser);函数说明:设置设备的实时上传事件的功能。调用该函数之后,当设备检测到交通违章等事件的时候,将通知给客户端。参数说明:in
28、lLoginID,CLIENT_Login的返回值 in nChannelID,需要设置的通道号in dwAlarmType,需要设置的事件类型类型含义EVENT_IVS_ALL所有事件 EVENT_IVS_TRAFFICCONTROL交通管制事件 EVENT_IVS_TRAFFICACCIDENT交通事故事件 EVENT_IVS_TRAFFICJUNCTION交通路口事件 EVENT_IVS_TRAFFICGATE交通卡口事件 EVENT_TRAFFICSNAPSHOT交通抓拍事件out cbAnalyzerData,事件回调函数,用户可以在该回调函数中受到设备上传的事件。 out dwUs
29、er,用户在这里设置的参数,将在回调函数中传回。返回值:0 :设置失败。其他:一个整数代表本次设置的句柄。BOOL CLIENT_StopLoadPic(LONG lAnalyzerHandle);函数说明:停止实时上传事件。参数说明:lAnalyzerHandle, CLIENT_RealLoadPicture的返回值。返回值:TRUE: 成功。FALSE: 失败。typedef int (CALLBACK *fAnalyzerDataCallBack)(LONG lAnalyzerHandle, DWORD dwAlarmType, void* pAlarmInfo, BYTE *pBuffer, DWORD dwBufSize, DWORD dwUser, int nSequence, void *reserved);函数说明: 事件回调函数。函数参数:lAnalyzerHandle, CLIENT_RealLoadPicture的返回值。dwAlarmType,事件类型,用户根据不同的事件类型,将pAlarmInfo转化不同结构体的。事件类型事件对应的结构体EVENT_IVS_TRA
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1