From 4217e31b519aa4f3f7e3637e9b43a04052a21092 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期一, 16 十二月 2019 14:10:17 +0800 Subject: [PATCH] update --- goface.go | 35 ++++++++++++++++++++++++++++------- 1 files changed, 28 insertions(+), 7 deletions(-) diff --git a/goface.go b/goface.go index 8370f71..d2495c6 100644 --- a/goface.go +++ b/goface.go @@ -24,10 +24,11 @@ extractor bool propertizer bool tracker bool + fnLogger func(...interface{}) } // NewSDK sdk -func NewSDK() interface{} { +func NewSDK(fn func(...interface{})) interface{} { h := C.create_sdkface() if h == nil { return nil @@ -39,6 +40,7 @@ extractor: false, propertizer: false, tracker: false, + fnLogger: fn, } } @@ -50,6 +52,12 @@ } } +func (s *SDKFace) printLog(l ...interface{}) { + if s.fnLogger != nil { + s.fnLogger(l) + } +} + // Detector detector func Detector(i interface{}, minFaces, rollAngles, threadMax, gpu int) bool { s := i.(*SDKFace) @@ -58,6 +66,7 @@ } ret := C.init_detector(s.handle, C.int(minFaces), C.int(rollAngles), C.int(threadMax), C.int(gpu)) if ret <= 0 { + s.printLog("->face--> CREATE Detector ERROR") return false } s.detector = true @@ -72,6 +81,7 @@ } ret := C.init_extractor(s.handle, C.int(threadMax), C.int(gpu)) if ret <= 0 { + s.printLog("->face--> CREATE Extractor ERROR") return false } s.extractor = true @@ -86,6 +96,7 @@ } ret := C.init_propertizer(s.handle, C.int(threadMax)) if ret <= 0 { + s.printLog("->face--> CREATE Propertizer ERROR") return false } s.propertizer = true @@ -101,6 +112,7 @@ ret := C.init_tracker(s.handle, C.int(w), C.int(h), C.int(maxFaces), C.int(interval), C.int(sampleSize), C.int(threadMax), C.int(gpu)) if ret <= 0 { + s.printLog("->face--> CREATE Tracker ERROR") return false } s.tracker = true @@ -133,6 +145,7 @@ if ret > 0 { return CFacePosArrayToGoArray(cfpos, int(count)) } + s.printLog("->face--> Detect No One, Ret: ", ret) return nil } @@ -144,10 +157,11 @@ //(void *handle, const cFacePos *pos, const void*data, const int w, const int h, const int c, const int chan, void **feat, int *featLen); var feat unsafe.Pointer var featLen C.int - p := C.extract(s.handle, pos, unsafe.Pointer(&data[0]), C.int(w), C.int(h), C.int(c), C.int(ch), &feat, &featLen) - if p > 0 { + ret := C.extract(s.handle, pos, unsafe.Pointer(&data[0]), C.int(w), C.int(h), C.int(c), C.int(ch), &feat, &featLen) + if ret > 0 { return C.GoBytes(feat, featLen) } + s.printLog("->face--> Extract Nothing, Ret: ", ret) return nil } @@ -177,6 +191,7 @@ C.free(thft) return &gothft } + s.printLog("->face--> Propertize Nothing, Ret: ", ret) return nil } @@ -212,6 +227,7 @@ return faces } + s.printLog("->face--> Track No One, Ret: ", ret) return nil } @@ -237,12 +253,14 @@ s := i.(*SDKFace) if !s.tracker { + s.printLog("->face--> TrackerResize Failed, No Tracker Init") return false } ret := C.resize(s.handle, C.int(w), C.int(h), C.int(ch)) - if ret >= 0 { + if ret == 0 { return true } + s.printLog("->face--> TrackerResize Failed, Ret: ", ret, " SDK Channel: ", ch, " Size: ", w, "x", h) return false } @@ -263,11 +281,13 @@ channel = 3 } + if !TrackerResize(i, w, h, dchan) { + return nil + } + var fInfo []sdkstruct.CFaceInfo - if s.tracker { - fInfo = Track(s, data, w, h, c, dchan) - } + fInfo = Track(s, data, w, h, c, dchan) var faces []sdkstruct.CFaceResult //灏唖dk杩斿洖鍊艰浆鎹㈡垚protomsg绫诲瀷 @@ -286,6 +306,7 @@ faces = append(faces, result) } + s.printLog("->face--> Run Detect Face Count: ", len(fInfo), " Result: ", len(faces)) return faces } -- Gitblit v1.8.0