zhangzengfei
2024-05-07 cdcd6c96d0f9dcd0cfa14efbd6002ceeb45de6bb
compare/compare.go
@@ -1,8 +1,8 @@
package compare
import (
   "encoding/base64"
   "fmt"
   "sdkCompare/util"
   "strconv"
   "sdkCompare/cache"
@@ -18,6 +18,8 @@
   if args.FaceFeature == nil {
      return nil
   }
   floatFeat := util.ByteSlice2float32Slice(args.FaceFeature)
   //指定最低分
   baseScore := thresholdLimit
@@ -36,7 +38,7 @@
   if args.TreeNodes != nil && len(args.TreeNodes) > 0 {
      for _, id := range args.TreeNodes {
         if _, ok := cache.CacheMap.Area[id]; ok {
            targets := cache.CacheMap.Area[id].Walk(DoSdkCompare, args.FaceFeature, baseScore)
            targets := cache.CacheMap.Area[id].Walk(DoSdkCompare, floatFeat, baseScore)
            if len(targets) > 0 {
               scResult.CompareResult = append(scResult.CompareResult, targets...)
            }
@@ -60,7 +62,7 @@
         continue
      }
      targets := val.Walk(DoSdkCompare, args.FaceFeature, baseScore)
      targets := val.Walk(DoSdkCompare, floatFeat, baseScore)
      if len(targets) > 0 {
         scResult.CompareResult = append(scResult.CompareResult, targets...)
         // todo 添加小区外的关联关系, 下次优先比对
@@ -68,7 +70,11 @@
   }
done:
   logger.Debugf("比对结果 %d条", len(scResult.CompareResult))
   logger.Debugf("比对结果 %d条, %+v", len(scResult.CompareResult), scResult.CompareResult)
   if len(scResult.CompareResult) > 0 {
      logger.Debugf("比对结果%+v",  scResult.CompareResult)
   }
   buf, err := proto.Marshal(&scResult)
   if err != nil {
      logger.Error("scResult Marshal error!", err)
@@ -78,13 +84,8 @@
   return buf
}
func DoSdkCompare(ci []byte, co string) float32 {
   co_d, err := base64.StdEncoding.DecodeString(co)
   if err != nil {
      logger.Error("DoSdkCompare err:", err)
      return -1
   }
   sec := DecCompare(ci, co_d)
func DoSdkCompare(ci, co []float32) float32 {
   sec := DirectCompare(ci, co)
   //logger.Debug("比对得分为:", sec)
   sec = ParseScore(sec)