panlei
2019-06-29 fce697021526285f7e06387ea8f282d11ed25155
把区域数据变为指针拷贝
2个文件已修改
90 ■■■■■ 已修改文件
main.go 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go
@@ -54,80 +54,6 @@
    }
}
// 将外部传进来的sdk数据包解成 ArgsFromSdk
//func paramFormat(msg []byte, arg *ruleserver.ArgsFromSdk) protomsg.SdkMessage {
//    defer func() {
//        if err := recover(); err != nil {
//            fmt.Println("解包过程的错误", err.(string))
//        }
//
//    }()
//    // 反序列化数据得到sdk入参
//    m := protomsg.SdkMessage{}
//    err := proto.Unmarshal(msg, &m)
//    if err != nil {
//        panic("解析msg时出现错误")
//    }
//    arg.CameraId = m.Cid
//    arg.TaskId = m.Tasklab.Taskid
//    bdata, err := util.UnCompress(m.Data)
//    if err != nil {
//        panic("解压缩图片时出现错误")
//    }
//    i := protomsg.Image{}
//    err = proto.Unmarshal(bdata, &i)
//    arg.ImageWidth = int(i.Width)
//    arg.ImageHeight = int(i.Height)
//    // 暂时写死,sdk还没有这俩算法
//    arg.KeepRight = false
//    arg.IsStatic = false
//    for _, sdkinfo := range m.Tasklab.Sdkinfos { // yolo算法
//        if sdkinfo.Sdktype == "Yolo" {
//            if len(sdkinfo.Sdkdata) > 1 {
//                // 大于1才有数据
//                fmt.Println("----------------------------------------------------",m.Caddr)
//                yoloParam := protomsg.ParamYoloObj{}
//                err = proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam)
//                if err != nil {
//                    fmt.Println("解析YOLO sdk数据时出现错误", err)
//                    continue
//                }
//                for _, info := range yoloParam.Infos {
//                    if info.Typ == 0 {
//                        photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.RcObj), Score: float64(info.Prob)*100,IsYolo:true}
//                        arg.Photo = append(arg.Photo, photoMap)
//                    }
//                }
//            } else {
//                continue
//            }
//
//        }
//        if sdkinfo.Sdktype == "FaceDetect" { // 人脸检测
//            if len(sdkinfo.Sdkdata) > 1 {
//                fmt.Println("----------------------------------------------------",m.Caddr)
//                faceParam := protomsg.ParamFacePos{}
//                err = proto.Unmarshal(sdkinfo.Sdkdata, &faceParam)
//                if err != nil {
//                    fmt.Println("解析FACE sdk数据时出现错误", err)
//                    continue
//                }
//                for _, info := range faceParam.Faces {
//                    photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.Pos.RcFace), Score: float64(info.Pos.Quality), IsYolo:false,ThftRes:*(info.Result)}
//                    arg.Photo = append(arg.Photo, photoMap)
//                }
//            } else {
//                continue
//            }
//        }
//        //if sdkinfo.Sdktype == "FaceExtract" { // 人脸提取
//
//        //}
//
//    }
//    return m
//}
// 将外部传进来的rect(top,bottom,left,right)转化为自己内部的rect(left top width height)
func rectFormat(rcobj *protomsg.Rect) ruleserver.Rect {
    rect := ruleserver.Rect{}
ruleserver/ruleToformula.go
@@ -112,7 +112,7 @@
    IsStatic    bool       // 是否静止
    ImageWidth  int        // 摄像机拍摄的图像宽 像素
    ImageHeight int        // 摄像机拍摄的图像高 像素
    AreaMapList []AreaMap  // 本sdk提取的数据按照区域划分后的数据集合
    AreaMapList []*AreaMap  // 本sdk提取的数据按照区域划分后的数据集合
}
// 从算法模块儿拿来的对一帧图像各个算法提取的数据集合
@@ -182,8 +182,8 @@
    for _, polygon := range cameraPolygons {
        areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine}
        // 为每个摄像机区域填充数据
        areaMap.CountAreaObjs(arg)
        arg.AreaMapList = append(arg.AreaMapList, areaMap)
        (&areaMap).CountAreaObjs(arg)
        arg.AreaMapList = append(arg.AreaMapList, &areaMap)
    }
}
@@ -234,7 +234,7 @@
                log.Println("入侵的算法数据",sdkData)
            }
            for _, areaMap := range sdkData.AreaMapList {
                ruleResult := filterRule(groupRule.Rules[j], &areaMap)
                ruleResult := filterRule(groupRule.Rules[j], areaMap)
                if ruleResult.Result != "" {
                    log.Println("条件规则结果:", ruleResult.Result)
                    resultSplice = append(resultSplice, &ruleResult)
@@ -247,7 +247,7 @@
    for _, sdkData := range args.Sdkdata {
        for _, areaMap := range sdkData.AreaMapList {
            for j := 0; j < len(groupRule.Rules); j++ {
                putFaceToResult(groupRule.Rules[j], &areaMap, faces)
                putFaceToResult(groupRule.Rules[j], areaMap, faces)
            }
        }
    }
@@ -256,7 +256,7 @@
    for j := 0; j < len(groupRule.Rules); j++ {
        for _, sdkData := range args.Sdkdata {
            for _, areaMap := range sdkData.AreaMapList {
                ruleResult := transferParameters(groupRule.Rules[j], &areaMap)
                ruleResult := transferParameters(groupRule.Rules[j], areaMap)
                if ruleResult.Result != "" {
                    log.Println("数量规则结果:", ruleResult.Result)
                    resultSplice = append(resultSplice, &ruleResult)
@@ -268,7 +268,7 @@
    for j := 0; j < len(groupRule.Rules); j++ {
        for _, sdkData := range args.Sdkdata {
            for _, areaMap := range sdkData.AreaMapList {
                ruleResult := timeRuleResult(groupRule.Rules[j], &areaMap)
                ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
                if ruleResult.Result != "" {
                    log.Println("时间规则结果:", ruleResult.Result)
                    resultSplice = append(resultSplice, &ruleResult)
@@ -280,7 +280,7 @@
    for j := 0; j < len(groupRule.Rules); j++ {
        for _, sdkData := range args.Sdkdata {
            for _, areaMap := range sdkData.AreaMapList {
                duration(groupRule.Rules[j], &areaMap)
                duration(groupRule.Rules[j], areaMap)
            }
        }
    }