panlei
2019-07-30 560fa457a17105975ce9017ec069cf9bc3066671
追201人脸数据
2个文件已修改
199 ■■■■ 已修改文件
main.go 197 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go
@@ -8,16 +8,14 @@
    //"bytes"
    "flag"
    "fmt"
    "ruleprocess/logger"
    "github.com/golang/protobuf/proto"
    "ruleprocess/logger"
    //"gocv.io/x/gocv"
    //"image"
    //"image/color"
    //"os"
    "ruleprocess/cache"
    "ruleprocess/ruleserver"
    "ruleprocess/util"
    "ruleprocess/insertdata"
    "sync"
)
var dbIp = flag.String("dbIp","127.0.0.1","dbserver ip")
@@ -68,14 +66,15 @@
                continue
            } else {
                arg := ruleserver.SdkDatas{}
                m := paramFormat(msg, &arg)
                paramFormat(msg, &arg)
                //m := paramFormat(msg, &arg)
                //logger.Info("解析出来的数据:", arg)
                ruleserver.Judge(&arg,&m) // 把sdkMessage传进去,方便缓存数据时拼出一个resultMag
                // 把arg里的打的标签拿出来给m再封装一层
                resultMag := ruleserver.ResultMsg{SdkMessage: &m, RuleResult: arg.RuleResult}
                //logger.Info("打完标签后的结果:",resultMag)
                // 将打完标签的数据插入到ES
                insertdata.InsertToEs(resultMag)
                //ruleserver.Judge(&arg,&m) // 把sdkMessage传进去,方便缓存数据时拼出一个resultMag
                //// 把arg里的打的标签拿出来给m再封装一层
                //resultMag := ruleserver.ResultMsg{SdkMessage: &m, RuleResult: arg.RuleResult}
                ////logger.Info("打完标签后的结果:",resultMag)
                //// 将打完标签的数据插入到ES
                //insertdata.InsertToEs(resultMag)
            }
        }
    }
@@ -106,94 +105,106 @@
    if err != nil {
        panic("解析msg时出现错误")
    }
    // 先进行一下追踪
    ruleserver.FaceIsSame(&m)
    args.CameraId = m.Cid
    args.TaskId = m.Tasklab.Taskid
    // 把图片的二进制解压缩进行画框在压缩回去
    bdata, err := util.UnCompress(m.Data)
    if err != nil {
        panic("解压缩图片时出现错误")
    }
    i := protomsg.Image{}
    err = proto.Unmarshal(bdata, &i)
    //logger.Info("----------------看看有几个算法:",len(m.Tasklab.Sdkinfos))
    for _, sdkinfo := range m.Tasklab.Sdkinfos { // yolo算法
        if sdkinfo.Sdktype == "Yolo" {
            arg := ruleserver.SdkData{}
            arg.TaskId = m.Tasklab.Taskid
            arg.IpcId = sdkinfo.Ipcid
            arg.IsYolo = true
            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
            logger.Info("-----追踪之后sdkinfo.Sdkdata的长度为:----",len(sdkinfo.Sdkdata))
            if len(sdkinfo.Sdkdata) > 1 {
                // 大于1才有数据
                yoloParam := protomsg.ParamYoloObj{}
                err = proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam)
                if err != nil {
                    logger.Info("解析YOLO sdk数据时出现错误", err)
                    continue
                }
                var yoloNum int = 0
                for _, info := range yoloParam.Infos {
                    if info.Typ == 0 {
                        //logger.Debug("-------------yolo的坐标有几个",info.RcObj)
                        photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.RcObj), Score: float64(info.Prob)*100,IsYolo:true}
                        arg.Photo = append(arg.Photo, photoMap)
                        yoloNum++
                    }
                }
                logger.Info("--------------追踪之后yolo的个数:",yoloNum)
                args.Sdkdata = append(args.Sdkdata,&arg)
            } else {
                continue
            }
        }
        if sdkinfo.Sdktype == "FaceDetect" { // 人脸检测
            arg := ruleserver.SdkData{}
            arg.TaskId = m.Tasklab.Taskid
            arg.IpcId = sdkinfo.Ipcid
            arg.IsYolo = false
            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
    // 找201的人脸数据
    for _, sdkinfo := range m.Tasklab.Sdkinfos {
        if sdkinfo.Sdktype == "FaceDetect" && m.Cid == "e7e3f5b0-d0ef-40af-a9c9-eefd736937bf"{ // 人脸检测
            if len(sdkinfo.Sdkdata) > 1 {
                faceParam := protomsg.ParamFacePos{}
                err = proto.Unmarshal(sdkinfo.Sdkdata, &faceParam)
                if err != nil {
                    logger.Info("解析FACE sdk数据时出现错误", err)
                    continue
                }
                logger.Info("--------------追踪之后yolo的个数:",len(faceParam.Faces))
                for _, info := range faceParam.Faces {
                    //logger.Info("_______________________________________________第一次看相似值:",info.Pos.FAngle.Confidence*100)
                    photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.Pos.RcFace), Score: float64(info.Pos.FAngle.Confidence*100), IsYolo:false,ThftRes:*(info.Result),Feature:info.Feats}
                    arg.Photo = append(arg.Photo, photoMap)
                }
                args.Sdkdata = append(args.Sdkdata,&arg)
                logger.Debug("有201的人脸数据了")
            } else {
                continue
                logger.Debug("没有201的人脸数据")
            }
        }
    }
    // 先进行一下追踪
    //ruleserver.FaceIsSame(&m)
    //args.CameraId = m.Cid
    //args.TaskId = m.Tasklab.Taskid
    //// 把图片的二进制解压缩进行画框在压缩回去
    //bdata, err := util.UnCompress(m.Data)
    //if err != nil {
    //    panic("解压缩图片时出现错误")
    //}
    //i := protomsg.Image{}
    //err = proto.Unmarshal(bdata, &i)
    ////logger.Info("----------------看看有几个算法:",len(m.Tasklab.Sdkinfos))
    //for _, sdkinfo := range m.Tasklab.Sdkinfos { // yolo算法
    //    if sdkinfo.Sdktype == "Yolo" {
    //        arg := ruleserver.SdkData{}
    //        arg.TaskId = m.Tasklab.Taskid
    //        arg.IpcId = sdkinfo.Ipcid
    //        arg.IsYolo = true
    //        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
    //        logger.Info("-----追踪之后sdkinfo.Sdkdata的长度为:----",len(sdkinfo.Sdkdata))
    //        if len(sdkinfo.Sdkdata) > 1 {
    //            // 大于1才有数据
    //            yoloParam := protomsg.ParamYoloObj{}
    //            err = proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam)
    //            if err != nil {
    //                logger.Info("解析YOLO sdk数据时出现错误", err)
    //                continue
    //            }
    //            var yoloNum int = 0
    //            for _, info := range yoloParam.Infos {
    //                if info.Typ == 0 {
    //                    //logger.Debug("-------------yolo的坐标有几个",info.RcObj)
    //                    photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.RcObj), Score: float64(info.Prob)*100,IsYolo:true}
    //                    arg.Photo = append(arg.Photo, photoMap)
    //                    yoloNum++
    //                }
    //            }
    //            logger.Info("--------------追踪之后yolo的个数:",yoloNum)
    //            args.Sdkdata = append(args.Sdkdata,&arg)
    //        } else {
    //            continue
    //        }
    //
    //    }
    //    if sdkinfo.Sdktype == "FaceDetect" { // 人脸检测
    //        arg := ruleserver.SdkData{}
    //        arg.TaskId = m.Tasklab.Taskid
    //        arg.IpcId = sdkinfo.Ipcid
    //        arg.IsYolo = false
    //        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
    //        if len(sdkinfo.Sdkdata) > 1 {
    //            faceParam := protomsg.ParamFacePos{}
    //            err = proto.Unmarshal(sdkinfo.Sdkdata, &faceParam)
    //            if err != nil {
    //                logger.Info("解析FACE sdk数据时出现错误", err)
    //                continue
    //            }
    //            logger.Info("--------------追踪之后yolo的个数:",len(faceParam.Faces))
    //            for _, info := range faceParam.Faces {
    //                //logger.Info("_______________________________________________第一次看相似值:",info.Pos.FAngle.Confidence*100)
    //                photoMap := ruleserver.PhotoMap{Rects: rectFormat(info.Pos.RcFace), Score: float64(info.Pos.FAngle.Confidence*100), IsYolo:false,ThftRes:*(info.Result),Feature:info.Feats}
    //                arg.Photo = append(arg.Photo, photoMap)
    //            }
    //            args.Sdkdata = append(args.Sdkdata,&arg)
    //        } else {
    //            continue
    //        }
    //    }
    //}
    return m
}
ruleserver/ruleToformula.go
@@ -71,7 +71,7 @@
    CameraId   string
    TaskId     string
    Sdkdata    []*SdkData
    RuleResult map[string]interface{} // 过完规则后打的标签 face: []Arg, yolo: []Result, cacheData: SdkDatas, timeLabel: 0,1,2,3,4,5
    RuleResult map[string]interface{} // 过完规则后打的标签 face: []FaceResult, yolo: []Result, cacheData: SdkDatas, timeLabel: 0,1,2,3,4,5
}
type ResultMsg struct {