智能交通设备开发说明文档.docx
《智能交通设备开发说明文档.docx》由会员分享,可在线阅读,更多相关《智能交通设备开发说明文档.docx(26页珍藏版)》请在冰豆网上搜索。
智能交通设备开发说明文档
智能交通设备开发说明文档
一、产品概述
智能交通设备主要用在交通卡口、闯红灯等的车辆信息的分析及记录。
在安装好智能设备之后需要根据实际的应用场景对智能交通设备场景,待检测物体,及事件规则进行配置。
在完成配置后,设备会根据配置,进行图片抓拍,并分析检测物体信息。
用户可通过订阅智能报警事件,获得抓拍到的图片及物体信息,具体代码实现见下文说明。
二、产品方案示意图
图2.1
三、智能交通配置说明及相关SDK接口说明
3.1智能交通配置SDK接口:
3.1.1获取智能交通设备配置信息接口
1)BOOLCALL_METHODCLIENT_GetNewDevConfig(LONGlLoginID,char*szCommand,intnChannelID,char*szOutBuffer,DWORDdwOutBufferSize,int*error,intwaittime);
函数说明:
获取配置,按照字符串格式,各个字符串包含的信息由CLIENT_ParseData解析。
参数说明:
[in]lLoginID,CLIENT_Login的返回值
[in]szCommand,命令参数,见CLIENT_ParseData命令参数说明。
[in]nChannelID,通道号
[out]szOutBuffer,输出缓冲,
[out]dwOutBufferSize,输出缓冲大小
[out]error,错误码
0
成功
1
失败
2
数据不合法
3
暂时无法设置
4
没有权限
[in]waittime,等待超时时间
2)BOOLCLIENT_ParseData(char*szCommand,char*szInBuffer,LPVOIDlpOutBuffer,DWORDdwOutBufferSize,void*pReserved);
函数说明:
此接口配合CLIENT_GetNewDevConfig使用,在使用CLIENT_GetNewDevConfig获取字符串配置信息后,使用此接口从配置信息中提取想要的信息。
参数说明:
[in]szCommand,命令参数。
命令参数
相应结构体
CFG_CMD_ANALYSEGLOBAL
智能交通设备场景配置,对应结构体CFG_ANALYSEGLOBAL_INFO
CFG_CMD_ANALYSEMODULE
待检测物体模块配置,对应结构体CFG_ANALYSEMODULES_INFO
CFG_CMD_ANALYSERULE
智能交通设备事件规则配置,对应结构体CFG_ANALYSERULES_INFO
[in]szInBuffer,输入缓冲,字符配置缓冲。
[out]lpOutBuffer,输出缓冲,交通结构体类型
[out]dwOutBufferSize,输出缓冲的大小
[in]pReserved,保留参数
3.1.2设置智能交通设备配置信息接口
1)BOOLCLIENT_PacketData(char*szCommand,LPVOIDlpInBuffer,
DWORDdwInBufferSize,char*szOutBuffer,DWORDdwOutBufferSize);
函数说明:
此接口配合CLIENT_SetNewDevConfig使用,使用CLIENT_PacketData后,将打包的信息通过CLIENT_SetNewDevConfig设置到设备上。
参数说明:
[out]szCommand
命令参数,参见CLIENT_ParseData中表格
[in]lpInBuffer
输入缓冲,结构体类型参见CLIENT_ParseData中表格
[in]dwInBufferSize
输入缓冲大小
[out]szOutBuffer
输出缓冲
[in]dwOutBufferSize
输出缓冲大小
2)BOOLCLIENT_SetNewDevConfig(LONGlLoginID,char*szCommand,intnChannelID,char*szInBuffer,DWORDdwInBufferSize,int*error,int*restart,intwaittime=500);
函数说明:
设置配置,按照字符串格式,各个字符串包含的信息由CLIENT_PacketData组包。
参数说明:
[in]lLoginID
CLIENT_Login的返回值
[in]szCommand,请参考CLIENT_ParseData中的说明。
[in]nChannelID,通道号。
[in]szInBuffer,输入缓冲。
[in]dwInBufferSize,输入缓冲大小。
[out]error,错误码。
0
成功
1
失败
2
数据不合法
3
暂时无法设置
4
没有权限
[out]restart,配置设置后是否需要重启设备,1表示需要重启,0表示不需要重启。
[in]waittime,等待超时时间。
3.1.3获取智能交通设备能力集信息接口
BOOLCLIENT_QueryNewSystemInfo(LONGlLoginID,char*szCommand,intnChannelID,char*szOutBuffer,DWORDdwOutBufferSize,int*error,intwaittime=1000);
函数说明:
查询系统能力信息,按字符串格式
[in]lLoginID,CLIENT_Login的返回值。
[in]szCommand,查询能力类型。
(CFG_CAP_CMD_VIDEOANALYSE,智能交通设备能力集,对应结构体为CFG_CAP_ANALYSE_INFO)
[in]nChannelID,通道号。
[out]szOutBuffer,接收的能力集字符串缓冲区。
[in]dwOutBufferSize,接收的总字节数(单位字节)。
[out]error,错误号。
[in]waittime,等待时间。
3.2智能交通配置具体说明
智能交通配置分为三部分:
智能交通场景配置,待检测物体配置,事件规则配置。
3.2.1智能交通场景配置:
智能交通场景配置参数包括摄像头高度,摄像头水平距,近景点位置,远景点位置,近景点距摄像头水平距,远景点距摄像头水平距及车道线,具体描述如下:
如图3.1所示,摄像头高度,是指摄像头离地面的垂直距离,摄像头水平距是指摄像头垂直线到摄像头视野区域中心点的距离。
近景点是指摄像头抓拍的图片的底部中心位置,一般取值为(4096,8192),远近点是指图片的中心位置,一般取值为(4096,4096)。
近景点距摄像头水平距是指近景点在实景场景中对应位置到摄像头垂直线的水平距离,远景点距摄像头水平距是指远景点在实景场景中对应位置到摄像头垂直线的水平距离。
图3.1
车道线是根据摄像头实际拍摄到的图片中的车道得到的车道线信息,如图3.2所示(车道线的相关坐标点是图片上的对应像素点位置)。
车道号由用户自己定义。
车道方向是指当前车道上车辆行驶的方向。
图3.2
获取智能交通设备场景配置信息代码示例:
intnErr=0;
charszOutBuffer[32*1024]={0};
CFG_ANALYSEGLOBAL_INFOstuAnalysGlobalInfo={0};
//getglobalinfo
BOOLbSuccess=CLIENT_GetNewDevConfig(m_lLoginID,CFG_CMD_ANALYSEGLOBAL,nChannel,szOutBuffer,32*1024,&nErr);
if(bSuccess)
{
intnRetLen=0;
BOOLbRet=CLIENT_ParseData(CFG_CMD_ANALYSEGLOBAL,szOutBuffer,(char*)&stuAnalysGlobalInfo,sizeof(CFG_ANALYSEGLOBAL_INFO),&nRetLen);
if(bRet==FALSE)
{
MessageBox("Parserdataerror","Prompt");
returnFALSE;
}
}//if(bSuccess)
else
{
MessageBox("GetTrafficScenefailed","Prompt");
returnFALSE;
}
获取智能交通设备场景配置信息代码示例:
intnRestart=0;
intnError=0;
charszOutBuffer[32*1024]={0};
CFG_ANALYSEGLOBAL_INFOstuAnalysGlobalInfo={0};
//saveglobalinfo
BOOLbRet=CLIENT_PacketData(CFG_CMD_ANALYSEGLOBAL,(char*)&stuAnalysGlobalInfo,sizeof(CFG_ANALYSEGLOBAL_INFO),szOutBuffer,32*1024);
if(bRet==FALSE)
{
MessageBox("Packdatafailed!
"),"Prompt");
}
else
{
BOOLbSuccess=CLIENT_SetNewDevConfig(m_lLoginID,CFG_CMD_ANALYSEGLOBAL,nChannelId,szOutBuffer,32*1024,&nError,&nRestart,3000);
if(bSuccess)
{
MessageBox("Savesuccessfully!
","Prompt");
}
else
{
MessageBox("SaveTrafficScenefailed!
"),"Prompt");
}
}
智能分析设备配置演示程序中交通场景配置界面展示:
车道线设置界面展示:
3.2.2检测物体模块配置
待检测物体模块配置参数包括待检测物体类型,检测区域,跟踪区域,待检测物体的最大,最小尺寸,具体描述如下:
带检测物体类型由当前设备的能力集决定,智能交通设备通常支持对车辆、车牌等物体的检测。
检测区域,跟踪区域是指在摄像头实际拍摄到的图片中画出的检测区和跟踪区的位置如图3.3所示(这两个区域坐标点是图片上的对应像素点位置)。
图3.3
待检测的物体最小,最大尺寸也是指物体在图片中的呈现的最小最大尺寸,以像素为单位。
在待检测物体是车牌时,有一个最佳检测尺寸范围:
长(50–240),宽(10–100)。
获取设备能力集代码示例:
CFG_CAP_ANALYSE_INFOstuChannelCap={0};
charszOutBuffer[32*1024]={0};
intnErr=0;
BOOLbSuccess=CLIENT_QueryNewSystemInfo(m_lLoginID,CFG_CAP_CMD_VIDEOANALYSE,nChannel,szOutBuffer,32*1024,&nErr);
if(bSuccess)
{
intnRetLen=0;
BOOLbRet=CLIENT_ParseData(CFG_CAP_CMD_VIDEOANALYSE,szOutBuffer,(char*)&stuChannelCap,sizeof(CFG_CAP_ANALYSE_INFO),&nRetLen);
if(bRet==FALSE)
{
MessageBox(ConvertString("Parserdataerror"),ConvertString("Prompt"));
return;
}
}
else
{
MessageBox(ConvertString("getdevicecapfailed!
"),ConvertString("Prompt"));
}
获取智能交通设备带检测物体模块配置信息代码示例:
intnErr=0;
charszOutBuffer[32*1024]={0};
CFG_ANALYSEMODULES_INFOstuAnalysModuleInfo={0};
BOOLbSuccess=CLIENT_GetNewDevConfig(m_lLoginID,CFG_CMD_ANALYSEMODULE,nChannel,
szOutBuffer,32*1024,&nErr);
if(bSuccess)
{
intnRetLen=0;
BOOLbRet=CLIENT_ParseData(CFG_CMD_ANALYSEMODULE,szOutBuffer,(char*)&stuAnalysModuleInfo,sizeof(CFG_ANALYSEMODULES_INFO),&nRetLen);
if(bRet==FALSE)
{
MessageBox("Parserdataerror","Prompt");
returnFALSE;
}
}//if(bSuccess)
else
{
MessageBox(GetModuleinfofailed!
","Prompt");
returnFALSE;
}
设置智能交通设备带检测物体模块配置信息代码示例:
intnRestart=0;
intnError=0;
charszOutBuffer[32*1024]={0};
CFG_ANALYSEMODULES_INFOstuAnalysModuleInfo={0};
BOOLbRet=CLIENT_PacketData(CFG_CMD_ANALYSEMODULE,(char*)&stuAnalysModuleInfo,sizeof(CFG_ANALYSEMODULES_INFO),szOutBuffer,32*1024);
if(bRet==FALSE)
{
MessageBox("Packdatafailed!
","Prompt");
}
else
{
BOOLbSuccess=CLIENT_SetNewDevConfig(m_lLoginID,CFG_CMD_ANALYSEMODULE,nChannelId,szOutBuffer,32*1024,&nError,&nRestart,3000);
if(bSuccess)
{
MessageBox("Savesuccessfully!
","Prompt");
}
else
{
MessageBox("SaveModuleinfofailed!
","Prompt");
}
}
智能分析设备配置演示程序中检测物体模块配置界面展示:
检测区及跟踪区设置界面展示:
3.2.3事件规则配置
事件规则是对触发某个事件报警条件的描述,当智能设备检测到符合某个事件规则的情况发生时就会触发事件报警,并记录事件信息。
一个智能交通设备上的一个事件可以对应多个规则,每个设备能够支持的规则数是有限的,可通过设备能力集获得设备支持的最大规则数。
目前以交通卡口事件规则为例,对规则参数进行说明,交通卡口事件规则参数包括:
规则名,规则使能,检测物体类型,速度上限,速度下限,车道号,车道线,检测线,具体说明如下:
规则名,是指当前规则的名字,不能与当前设备的其他规则重名。
规则使能,是指当前规则是否生效。
检测物体类型,是指当前规则能够检测的物体的类型,此处设置的类型必须是设备能力集中支持的物体类型。
速度上限,速度下限,是检测物体的运动速度上下限,单位:
千米/小时。
车道号,是指当前规则所适用的车道。
车道线,是指当前规则所适用的车道位置,如下图所示,是指在摄像头实际拍摄到的图片中的位置,此处的车道线与场景配置中的车道不会相互影响。
检测线,是指物体触发报警的位置,如图3.4所示,是指在摄像头实际拍摄到的图片中的位置。
图3.4
获取智能设备能力集代码示例见3.2.2。
获取智能设备规则配置信息代码示例:
intnErr=0;
charszOutBuffer[32*1024]={0};
CFG_ANALYSERULES_INFOstuAnalysRuleInfo={0};
//nMaxRuleStructSize指设备支持的规则对应的最大规则结构体大小
//nMaxRuleNum指设备支持的最大规则数
intnBufLen=(sizeof(CFG_RULE_INFO)+nMaxRuleStructSize)*nMaxRuleNum;
stuAnalysRuleInfo.pRuleBuf=newchar[nBufLen];
stuAnalysRuleInfo.nRuleLen=nBufLen;
BOOLbSuccess=CLIENT_GetNewDevConfig(m_lLoginID,CFG_CMD_ANALYSERULE,nChannel,szOutBuffer,32*1024,&nErr,2000);
if(bSuccess)
{
intnRetLen=0;
BOOLbRet=CLIENT_ParseData(CFG_CMD_ANALYSERULE,szOutBuffer,(char*)&stuAnalysRuleInfo,sizeof(CFG_ANALYSERULES_INFO),&nRetLen);
if(bRet==FALSE)
{
MessageBox("Parserdataerror","Prompt");
returnFALSE;
}
}//if(bSuccess)
else
{
MessageBox("GetRuleinfoerror!
","Prompt");
returnFALSE;
}
设置智能设备规则配置信息代码示例:
intnRestart=0;
intnError=0;
charszOutBuffer[32*1024]={0};
CFG_ANALYSERULES_INFOstuAnalysRuleInfo={0};
BOOLbRet=CLIENT_PacketData(CFG_CMD_ANALYSERULE,(char*)&stuAnalysRuleInfo,sizeof(CFG_ANALYSERULES_INFO),szOutBuffer,32*1024);
if(bRet==FALSE)
{
MessageBox("Packdatafailed!
","Prompt");
}
else
{
BOOLbSuccess=CLIENT_SetNewDevConfig(m_lLoginID,CFG_CMD_ANALYSERULE,nChannelId,szOutBuffer,32*1024,&nError,&nRestart,3000);
if(bSuccess)
{
MessageBox("Savesuccessfully!
","Prompt");
}
else
{
MessageBox("SaveRuleinfofailed!
","Prompt");
}
}
智能分析设备配置演示程序中事件规则配置界面展示:
具体规则信息界面展示:
四、智能交通信息实时上传记相关SDK接口说明
4.1智能交通信息实时上传SDK接口
4.1.1智能交通设备实时上传接口说明
LONGCLIENT_RealLoadPicture(LONGlLoginID,intnChannelID,DWORDdwAlarmType,fAnalyzerDataCallBackcbAnalyzerData,DWORDdwUser);
函数说明:
设置设备的实时上传事件的功能。
调用该函数之后,当设备检测到交通违章等事件的时候,将通知给客户端。
参数说明:
[in]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]dwUser,用户在这里设置的参数,将在回调函数中传回。
返回值:
0:
设置失败。
其他:
一个整数代表本次设置的句柄。
BOOLCLIENT_StopLoadPic(LONGlAnalyzerHandle);
函数说明:
停止实时上传事件。
参数说明:
lAnalyzerHandle,CLIENT_RealLoadPicture的返回值。
返回值:
TRUE:
成功。
FALSE:
失败。
typedefint(CALLBACK*fAnalyzerDataCallBack)(LONGlAnalyzerHandle,DWORDdwAlarmType,void*pAlarmInfo,BYTE*pBuffer,DWORDdwBufSize,DWORDdwUser,intnSequence,void*reserved);
函数说明:
事件回调函数。
函数参数:
lAnalyzerHandle,CLIENT_RealLoadPicture的返回值。
dwAlarmType,事件类型,用户根据不同的事件类型,将pAlarmInfo转化不同结构体的。
事件类型
事件对应的结构体
EVENT_IVS_TRA