liuxiaolong
2019-10-08 f6d71fa2c9e24c337d34b2c6d1b481ce3a3c622e
查找此人不走提取,通过id获取特征
2个文件已修改
95 ■■■■ 已修改文件
controllers/fileController.go 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/esSearch.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/fileController.go
@@ -390,56 +390,55 @@
        return
    }
    var faceB []byte
    var uploadImage string
    var smImages []string
    //if searchBody.CaptureId != "" {//做查找此人,搜所有抓拍和底库
    //    searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CaptureId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
    //    if err !=nil {
    //        util.ResponseFormat(c, code.ComError, "抓拍数据不存在,请检查")
    //        return
    //    }
    //    if searchBase64Fea !=""{
    //        decodeF, err := base64.StdEncoding.DecodeString(searchBase64Fea)
    //        if err !=nil {
    //            util.ResponseFormat(c, code.ComError, "本条抓怕特征不是base64,请检查")
    //            return
    //        }
    //        faceB = decodeF
    //    }
    //} else {//做以图搜图
    //
    //}
    if searchBody.PicUrl == "" || len(searchBody.DataBases) == 0 {
        util.ResponseFormat(c, code.RequestParamError, "参数有误")
        return
    }
    if face,ok := faceExtractedMap[searchBody.PicUrl];!ok{
        httpPicUrl := ""
        idx := strings.LastIndex(searchBody.PicUrl, ":")
        if idx>-1 {
            httpPicUrl = "http://"+localConf.WebPicIp+searchBody.PicUrl[idx:]
    if searchBody.CompTargetId != "" {//做查找此人,按抓拍的人脸或者底库的人脸以图搜图
        if searchBody.CompTargetType == 0 {//本张人脸是底库人脸
            var dbpApi dbapi.DbPersonApi
            dbPersons, e := dbpApi.Dbpersoninfosbyid([]string{searchBody.CompTargetId})
            if e ==nil && dbPersons !=nil && len(dbPersons) ==1 {
                searchBase64Fea := dbPersons[0].FaceFeature
                if searchBase64Fea != "" {
                    decodeF, err := base64.StdEncoding.DecodeString(dbPersons[0].FaceFeature)
                    if err !=nil {
                        util.ResponseFormat(c, code.ComError, "本条底库人员特征不是base64,请检查")
                        return
                    }
                    faceB = decodeF
                } else {
                    util.ResponseFormat(c, code.ComError, "本条底库人员特征为空,请检查")
                    return
                }
            } else {
                util.ResponseFormat(c, code.ComError, "底库人员查询失败,请检查")
                return
            }
        } else {
            util.ResponseFormat(c, code.RequestParamError, "图片路径有误,请重新上传图片")
            searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
            if err !=nil {
                util.ResponseFormat(c, code.ComError, "抓拍数据不存在,请检查")
                return
            }
            if searchBase64Fea !=""{
                decodeF, err := base64.StdEncoding.DecodeString(searchBase64Fea)
                if err !=nil {
                    util.ResponseFormat(c, code.ComError, "本条抓怕特征不是base64,请检查")
                    return
                }
                faceB = decodeF
            }
        }
    } else {//做以图搜图
        if searchBody.PicUrl == "" || len(searchBody.DataBases) == 0 {
            util.ResponseFormat(c, code.RequestParamError, "以图搜图PicUrl不能为空")
            return
        }
        logger.Debug("httpPicUrl:",httpPicUrl)
        rb,err := util.ReadImgData(httpPicUrl)
        if err !=nil {
            util.ResponseFormat(c, code.RequestParamError, "读取图片失败,请重新上传图片")
            return
        }
        feaB, oriImg, smImgs, e := GetFeaFromOneFaceImg(rb)
        if e !=nil {
            util.ResponseFormat(c, code.RequestParamError, "未提取到特征,请重新上传图片")
        if face,ok := faceExtractedMap[searchBody.PicUrl];!ok{
            util.ResponseFormat(c, code.RequestParamError, "人脸特征未检测,请重新上传图片")
            return
        } else {
            uploadImage = oriImg
            smImages = smImgs
            faceB = feaB
            faceB = face.FaceBytes
        }
    } else {
        faceB = face.FaceBytes
    }
    if faceB == nil {
@@ -499,9 +498,7 @@
        CompareData: &totalData,
    })
    m := make(map[string]interface{},5)
    m["uploadImage"] = uploadImage
    m["smImage"] = smImages
    m := make(map[string]interface{},3)
    if totalData != nil && totalData.Len() > 0{
        sort.Sort(totalData)
        total := totalData.Len()
models/esSearch.go
@@ -14,7 +14,9 @@
    IsAggs     bool     `json:"isAggs"`//
    InputValue string   `json:"inputValue"`//输入框
    Collection string   `json:"collection"`//
    AlarmLevel []int32 `json:"alarmLevel"`//布防等级
    AlarmLevel []int32  `json:"alarmLevel"`//布防等级
    CompareNum string   `json:"compareNum"`//比对编号
    CaptureId string    `json:"captureId"`//抓拍id
    CompTargetId string `json:"compTargetId"`//查找此人id(既可能查找抓拍人,也可能查找底库人)
    CompTargetType int     `json:"compTargetType"`//查找此人的类型,0:底库,1:抓拍
}