全局组机器鱼策略DLL编写说明
1.策略函数接口
STRATEGY_API BOOL MURStrategy(IplImage* imgOrig,IplImage* imgRecog ,CFishAction action[],int n_action,CFishInfo fishInfo[],int n_fishInfo,CBallInfo ballinfo[],int n_ballinfo, OBSTAINFO obst[], int n_obst, CHANNEL channel[], int n_channel)
MURStrategy作为统一的策略入口函数(DLL导出的函数名),在Server端运行的时候动态加载及策略调度运算。传入的参数数据包含策略计算必要的所有信息。
输入参数说明:
(1)IplImage* imgOrig:相机采集到的原始图像帧,为OpenCV格式。
(2)IplImage* imgRecog:Server端进行前景提取处理后的图像识别结果,为OpenCV格式。 (3)CFishAction action[]:各机器鱼id对应的动作数组,策略运算最后返回的结果,用于
控制机器鱼的运动。
(4)int n_action:机器鱼动作数组的大小,目前n_action最大取值为16。 (5)CFishInfo fishInfo[]:机器鱼当前对应的信息数组,实时存储前景图像识别(位置信息)
跟踪机器鱼的相关信息。
(6)int n_fishInfo:机器鱼信息数组的大小,目前n_fishInfo最大取值为16。(int n_都
表示数组的大小)
(7)CBallInfo ballinfo[]:目标球当前对应的信息数组,实时存储前景图像识别跟踪不同球
的相关信息。
(8)int n_ballinfo:目标球信息数组的大小,目前n_ballinfo最大取值为10。 (9)OBSTAINFO obst[]:障碍物信息数组,一般不使用。
(10)int n_obst:障碍物信息数组的大小,目前n_obst最大取值为4。 (11)CHANNEL channel[]:临时目标点的信息数组,存储客户端添加的目标点信息,从0下标
开始连续存储。
(12)int n_channel:临时目标点当前存有有效数据的大小,目前n_channel最大取值为20。 返回参数说明:
(1)返回策略运算最终是否有效,有效返回1,否则返回0。 (2)返回CFishAction action[],用于控制机器鱼的运动。
2.DLL编写说明
函数“STRATEGY_API BO
OL MURStrategy()”作为统一的唯一外部调用策略入口函数的入口,其声明形式禁止修改。返回的参数请按照“返回参数说明”进行编写。
具体编写自己的策略时,可在MURStrategy函数外自定义编写自己的策略函数或者策略类,并在MURStrategy函数内添加引用即可。
需注意的是,自定义的全局策略函数名不能与MURStrategy函数重名。具体的编写可参考提供的示例。
背景显示的,已经给予它显示,5秒后自动关闭,同时自动在程序的安装路径下创建并保存新采样的背景图片(Current's Temp Background.bmp)
3.旧策略兼容性
因新版对CFishAction、CFishInfo、CBallInfo 等类内相关的函数重命名,在进行旧策略移植时,旧策略原使用的相关函数名需要相应的做修改。比如:
表1 类函数名变化对比
CFishInfo类 旧版 GetHeadPoint GetRotatePt GetVdir GetTemppt GetToPosDir GetToPt GetCenterPt GetLastCenterPt
新版 GetHeaderPoint CalRotatePoint GetVdirection GetInterPoint GetToPosDirection GetToPoint GetCenterPoint GetLastCenterPoint 旧版 GetBallPt GetBeatPt GetRad GetVdir CBallInfo类 新版 GetBallPoint GetBeatPoint GetRadius GetVdirection 4.开发环境
目前策略dll编写开发环境使用VS2010 旗舰版。OpenCV使用2.4.8版本,已集成在策略DLL工程文件中。
5.策略DLL的使用
编译生成的策略DLL将在Server端动态加载引用。
6.建议
(1)策略函数接口内使用策略类对象变量时,建议以静态static的声明方式。 (2)输出打印策略调试信息的方法,自行查看相关资料。 (3)编译输出dll时,建议以Release的方式编译。
相关推荐: