panlei
2019-07-15 964418cf0fb7b143d16529d879968d7c8381f6f2
一帧数据只做一个任务
3个文件已修改
36 ■■■■ 已修改文件
main.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/readyDataForRule.go 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go
@@ -106,6 +106,7 @@
        panic("解析msg时出现错误")
    }
    args.CameraId = m.Cid
    args.TaskId = m.Tasklab.Taskid
    // 把图片的二进制解压缩进行画框在压缩回去
    bdata, err := util.UnCompress(m.Data)
    if err != nil {
ruleserver/readyDataForRule.go
@@ -31,9 +31,15 @@
    Content string `json:"content"`
}
// 以摄像机id查出跟其相关的所有任务下的所有规则组
func GetRuleGroup(cameraId string) []*protomsg.TaskGroupArgs {
func GetRuleGroup(cameraId string,taskId string) *protomsg.TaskGroupArgs {
    all := cache.GetCameraTaskRulesByCameraId(cameraId)
    return all
    var taskGroup  *protomsg.TaskGroupArgs
    for _,task := range all  {
        if task.TaskId == taskId {
            taskGroup = task
        }
    }
    return taskGroup
}
// 根据摄像机id拿到摄像机所有区域
func GetPolygons(cameraId string) []protomsg.CameraPolygon {
@@ -112,7 +118,7 @@
// 给目标填充liker
func (arg *Arg) fillLiker() {
    bytes := sdkcompare.GetComparePersonBaseInfo(nil, arg.Feature, 70)
    bytes := sdkcompare.GetComparePersonBaseInfo(nil, arg.Feature, 40)
    var m map[string]float32
    err1 := json.Unmarshal(bytes, &m)
    if err1 != nil {
ruleserver/ruleToformula.go
@@ -69,6 +69,7 @@
// 从算法模块儿拿来的对一帧图像各个算法提取的数据集合
type SdkDatas struct {
    CameraId   string
    TaskId     string
    Sdkdata    []*SdkData
    RuleResult map[string]interface{} // 过完规则后打的标签 face: []Arg, yolo: []Result, cacheData: SdkDatas, timeLabel: 0,1,2,3,4,5
}
@@ -104,29 +105,24 @@
            SdkDataFormat(args.CameraId, arg, cameraPolygons)
        }
        // 跑本摄像机的所有规则组 一组一组跑
        taskRuleList := GetRuleGroup(args.CameraId) // 本摄像机下所有任务组
        taskGroup := GetRuleGroup(args.CameraId, args.TaskId) // 本摄像机下所有任务组
        //logger.Println("看下摄像机下的任务组:",taskRuleList)
        // 得到属于该摄像机的若干组任务的完整规则(跟每一条完整规则比较之后得出本张图像对于某个规则是否报警的结果。放进map,比如本帧图像的id,所碰撞成功的规则id)
        args.RuleResult = make(map[string]interface{})
        args.RuleResult["yolo"] = []Result{}
        args.RuleResult["face"] = []Arg{}
        if len(taskRuleList) > 0 {
            for _, taskRule := range taskRuleList {
        for _, group := range taskGroup.GroupRules {
                //logger.Println("------------------------------任务规则:",taskRule)
                ruleList := taskRule.GroupRules // 获取的是task下面的任务组
                taskId := taskRule.TaskId
            taskId := taskGroup.TaskId
                //logger.Println("------------本组任务下的规则组的数量:",len(ruleList))
                for i := 0; i < len(ruleList); i++ {
                    temp := ruleList[i].Rules // temp为一组完整规则 在此需要判断规则是否是联动规则
            temp := group.Rules // temp为一组完整规则 在此需要判断规则是否是联动规则
                    if len(temp) > 0 {
                        if ruleList[i].SetType == "linkTask" {
                if group.SetType == "linkTask" {
                            // groupId中含有link则为联动任务
                            LinkTask(args, ruleList[i], taskId,message)
                    LinkTask(args, group, taskId, message)
                        } else {
                            // 独立任务的处理
                            RunRule(args, ruleList[i], taskId,message)
                        }
                    }
                    RunRule(args, group, taskId, message)
                }
            }
        }
@@ -333,7 +329,6 @@
        return false
    }
}
func putFaceToResult(am *AreaMap) []Arg {
    faces := []Arg{}
@@ -700,5 +695,3 @@
    }
    return LittleRuleResult{}
}