From f79f18bf3e65ad0eaf8fd1feb788bf792e362520 Mon Sep 17 00:00:00 2001 From: sunty <suntianyu0923@163.com> Date: 星期四, 01 八月 2019 15:05:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- controllers/fileController.go | 36 +++++++++++++++-- service/FaceCompareService.go | 29 +++++--------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index d801abd..4ca73fa 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -17,6 +17,7 @@ "mime/multipart" "net/http" "path" + "sort" "strconv" "strings" "time" @@ -181,9 +182,22 @@ TableName string `json:"tableName"` } +type CompareSortResult []CompareResult + +func (s CompareSortResult) Len() int{ + return len(s) +} +func (s CompareSortResult) Swap(i,j int){ + s[i],s[j] = s[j],s[i] +} +func (s CompareSortResult) Less(i,j int) bool{ + return s[i].CompareScore > s[j].CompareScore +} + //濉厖鍚戝墠绔繑鍥炵殑鏁版嵁 -func FillDataToCompareResult(compResult *protomsg.SdkCompareResult) []CompareResult { - resultList :=make([]CompareResult,0) +func FillDataToCompareResult(compResult *protomsg.SdkCompareResult) CompareSortResult { + //resultList :=make([]CompareResult,0) + var resultList = CompareSortResult{} dbPersonM := make(map[string]*protomsg.SdkCompareEach, 0) captureM := make(map[string]*protomsg.SdkCompareEach, 0) @@ -273,6 +287,7 @@ resultList = append(resultList,vpE) } } + sort.Sort(resultList) return resultList } @@ -365,12 +380,23 @@ compareService := service.NewFaceCompareService(arg) compareOnce := compareService.Compare() totalData := compareOnce.CompareData + logger.Debug("comp 姣斿缁撴潫锛岀敤鏃讹細",time.Since(timeStart)) m := make(map[string]interface{},3) - if totalData!=nil && len(*totalData)>0{ + if totalData != nil && totalData.Len() > 0{ //鎸夊垎鍊兼帓搴� - service.SortByScore(totalData) - total := len(*totalData) + var scorePre []float32 + for _,f1 :=range *totalData { + scorePre = append(scorePre, f1.CompareScore) + } + //logger.Debug("comp 鎺掑簭鍓嶅垎鍊兼暟缁勶細",scorePre) + sort.Sort(totalData) + var scoreAf []float32 + for _,f2 :=range *totalData { + scoreAf = append(scoreAf, f2.CompareScore) + } + //logger.Debug("comp 鎺掑簭鍚庡垎鍊兼暟缁勶細",scoreAf) + total := totalData.Len() m["compareNum"] = compareOnce.CompareNum m["total"] = total diff --git a/service/FaceCompareService.go b/service/FaceCompareService.go index 3882a86..bc94ee3 100644 --- a/service/FaceCompareService.go +++ b/service/FaceCompareService.go @@ -8,7 +8,6 @@ "nanomsg.org/go-mangos/protocol/req" "nanomsg.org/go-mangos/transport/ipc" "nanomsg.org/go-mangos/transport/tcp" - "sort" "sync" "webserver/extend/config" "webserver/extend/logger" @@ -28,28 +27,19 @@ type CompareOnce struct { CompareNum string `json:"compareOnce"` - CompareData *[]*protomsg.SdkCompareEach `json:"compareData"` + CompareData *CompareList `json:"compareData"` } -type CompareResultWrapper struct { - CompareData *[]*protomsg.SdkCompareEach - By func(p,q *protomsg.SdkCompareEach) bool -} +type CompareList []*protomsg.SdkCompareEach -func (crw CompareResultWrapper) Len()int { - return len(*crw.CompareData) +func (s CompareList) Len()int { + return len(s) } -func (crw CompareResultWrapper) Swap(i,j int) { - (*crw.CompareData)[i],(*crw.CompareData)[j] = (*crw.CompareData)[j],(*crw.CompareData)[i] +func (s CompareList) Swap(i,j int) { + s[i],s[j] = s[j],s[i] } -func (crw CompareResultWrapper) Less(i,j int) bool{ - return crw.By((*crw.CompareData)[i],(*crw.CompareData)[j]) -} - -func SortByScore(list *[]*protomsg.SdkCompareEach) { - sort.Sort(CompareResultWrapper{list, func(p, q *protomsg.SdkCompareEach) bool { - return q.CompareScore < p.CompareScore //閫掑噺鎺掑簭 - }}) +func (s CompareList) Less(i,j int) bool{//闄嶅簭鎺掑簭 + return s[i].CompareScore > s[j].CompareScore } var compResultHisM = make(map[string]*CompareOnce,0) @@ -78,7 +68,8 @@ compServerList := config.CompServerInfo.Url logger.Debug("compServerList:", compServerList) //1.鍚戝悇涓猚ompare杩涚▼鍙戣捣璇锋眰鎷垮埌姣斿缁撴灉 - resultList :=make([]*protomsg.SdkCompareEach,0) + var resultList CompareList + //resultList :=make([]*protomsg.SdkCompareEach,0) for _,str :=range compServerList{ reqUrl := "tcp://"+str resultB := doCompareRequest(reqUrl,b) -- Gitblit v1.8.0