Cis.Application Cb -> Camera base Api 分组名 Api 分组排序 数据库标识 CbCamera 表名 CbCamera 表描述 CbCameraParams 表名 CbCameraParams 表描述 相机表 名称 ip 地址 账号 密码 相机参数 Id 相机参数表 名称 相机类型 sdk 端口 FocusX FocusY zoom变化函数 相机参数服务 equal:cameraType,id,isDelete; like:name; between:[startTime,endTime]; equal:cameraType,isDelete; like:name; between:[startTime,endTime]; equal:cameraType,isDelete; like:name; between:[startTime,endTime]; index,size 相机服务 equal:cbCameraParamsId,id,isDelete; like:ip,name; between:[startTime,endTime]; equal:cbCameraParamsId,isDelete; like:ip,name; between:[startTime,endTime]; equal:cbCameraParamsId,isDelete; like:ip,name; between:[startTime,endTime]; index,size Cm -> Camera mark Api 分组名 Api 分组排序 数据库标识 CmMarkGroup 表名 CmMarkGroup 表描述 CmMarkLabel 表名 CmMarkLabel 表描述 标记分组表 名称 排序 备注 标签表 相机 Id 标记组 Id 名称 Pan 坐标 Tilt 坐标 Zoom 坐标 视频宽度 视频高度 画布 left 距离比例 画布 top 距离比例 备注 标记分组服务 equal:id,isDelete; like:name; between:[startTime,endTime]; equal:isDelete; like:name; between:[startTime,endTime]; equal:isDelete; like:name; between:[startTime,endTime]; index,size 标签服务 equal:cbCameraId,cmMarkGroupId,id,isDelete; like:name; between:[startTime,endTime]; equal:cbCameraId,cmMarkGroupId,isDelete; like:name; between:[startTime,endTime]; equal:cbCameraId,cmMarkGroupId,isDelete; like:name; between:[startTime,endTime]; index,size {cameraId, List(MarkLabelCalcResult)} 初始化线程 刷新所有相机 ptz 有待改善,应设置超时计数机制 https://blog.csdn.net/qq_28368039/article/details/118597396 刷新相机 ptz 刷新所有 markSearcher 刷新 markSearcher CameraId2Ip 字典 CameraIpCounts 字典 CameraPtzInfos 字典 Api 分组名 Api 分组排序 循环间隔,单位毫秒 超时时间,单位毫秒 相机 sdk 服务类 {ip, ICameraSDK} 相机 sdk 服务接口 注册相机 注销相机 是否存在相机 获取 ptz 获取 ptz 获取 ptz 获取 ptz 获取 ptz 相机计算参数 Camera Id Ptz 信息 FocusX FocusY ZoomVaryExpr 视频宽度 视频高度 标签计算参数 MarkLabel Id Ptz 信息 视频宽度 视频高度 画布 left 距离比例 画布 top 距离比例 标签计算结果 MarkLabel Id true 显示(在当前视频画面里面) false 不显示(不在当前视频画面里面) 画布 left 距离比例 画布 top 距离比例 追踪标签服务接口 激活相机进入运算 解除相机进入运算 是否存在相机进入运算 获取 Searcher 激活标签进入运算 解除标签进入运算 是否存在标签进入运算 获取标签计算结果列表 激活相机进入运算 解除相机进入运算 是否存在相机进入运算 获取 Searcher 激活标签进入运算 解除标签进入运算 是否存在标签进入运算 获取标签计算结果列表 追踪标签服务类 {cbCameraId, MarkSearcherBase} MarkSearcherDict 原子操作锁 MarkSearcherDict 中 MarkLabel 原子操作锁 ActivateSearcher 原子操作 DeactivateSearcher 原子操作 ActivateMarkLabel 原子操作 DeactivateMarkLabel 原子操作 当前相机计算参数 相机当前位置的世界坐标转化为相机坐标矩阵 {markLabelId, MarkLabelCalcParams} {markLabelId, MarkLabelCalcParams} 判断相机是否进行了转动,转动了则需要重新计算世界坐标到相机坐标的转换矩阵 此方法计算在球机zoom值最小的情况下成像矩阵中的 f 本质为获取像元大小 尝试方案1:通过计算的方式来获取 尝试方案2:通过张正友相机标定的方法来生成成像矩阵中的 f 获取将世界坐标系中的点转化为相机坐标系中的点的转换矩阵 获取将相机坐标系中的点转化为世界坐标系中的点的转换矩阵 计算标签位置过程 将Pan值转化为角度 将Tilt转化为角度 根据当前zoom值获取相机矩阵参数 将计算公式存储到数据库,实现动态计算公式 https://github.com/houlongchao/HLC.Expression https://blog.csdn.net/cxb2011/article/details/100837168 https://github.com/zz1231118/Rabbit 更新相机计算参数 添加标签计算参数 删除标签计算参数 是否存在标签计算参数 更新相机计算参数 配置应用所需服务,在该方法中可以添加应用所需要的功能或服务 配置应用请求处理管道 Sys -> System Api 分组名 Api 分组排序 数据库标识 SysDictType 表名 SysDictType 表描述 SysDataType 表名 SysDataType 表描述 系统字典值表 字典类型Id 编码 排序 备注 状态 系统字典类型表 名称 编码 排序 备注 状态 系统字典值服务 equal:sysDictTypeId,code,id,isDelete; between:[startTime,endTime]; equal:sysDictTypeId,code,isDelete; between:[startTime,endTime]; equal:sysDictTypeId,code,isDelete; between:[startTime,endTime]; index,size 系统字典类型服务 equal:code,id,isDelete; like:name; between:[startTime,endTime]; equal:code,isDelete; like:name; between:[startTime,endTime]; equal:code,isDelete; like:name; between:[startTime,endTime]; index,size