From 0ffd95f2278e860736e46f8b73f357470f5a3d91 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期三, 15 一月 2020 17:56:18 +0800
Subject: [PATCH] debug

---
 goface.go |   30 +++++++++++++++++++++---------
 1 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/goface.go b/goface.go
index 16b840a..79689bb 100644
--- a/goface.go
+++ b/goface.go
@@ -8,7 +8,7 @@
 #cgo LDFLAGS: -lTHFaceImage -lTHFeature -lTHFaceProperty -lTHFaceTracking
 #cgo LDFLAGS: -lcudart -lcublas -lcurand -lrt -ldl -lpthread
 #include <stdlib.h>
-#include "csdk.h"
+#include "cface.h"
 */
 import "C"
 import (
@@ -65,6 +65,8 @@
 		s.printLog("->face--> CREATE Detector ERROR: ", ret)
 		return false
 	}
+	s.printLog("->face--> CREATE Detector Threads: ", threadMax, " GPU:", gpu)
+
 	s.detector = true
 	return true
 }
@@ -80,6 +82,8 @@
 		s.printLog("->face--> CREATE Extractor ERROR: ", ret)
 		return false
 	}
+	s.printLog("->face--> CREATE Extractor Threads: ", threadMax, " GPU:", gpu)
+
 	s.extractor = true
 	return true
 }
@@ -95,6 +99,8 @@
 		s.printLog("->face--> CREATE Propertizer ERROR: ", ret)
 		return false
 	}
+	s.printLog("->face--> CREATE Propertizer Threads: ", threadMax)
+
 	s.propertizer = true
 	return true
 }
@@ -103,7 +109,7 @@
 func (s *SDKFace) Tracker(w, h, maxFaces, interval, sampleSize, threadMax, gpu int) bool {
 
 	if s.tracker {
-		return s.tracker
+		return true
 	}
 	ret := C.c_api_face_tracker_init(C.int(threadMax), C.int(gpu), C.int(w), C.int(h), C.int(maxFaces), C.int(interval), C.int(sampleSize))
 	if ret <= 0 {
@@ -150,15 +156,21 @@
 	if !s.extractor {
 		return nil
 	}
+	s.printLog("->face--> facepos: ", fpos)
 
 	var featLen C.int
 	pos := (*C.cFacePos)(unsafe.Pointer(&fpos))
+	if pos == nil {
+		return nil
+	}
 
 	p := C.c_api_face_extract(&featLen, pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch))
-	defer C.free(unsafe.Pointer(p))
-	b := C.GoBytes(unsafe.Pointer(p), featLen)
-	s.printLog("->face--> Extract Nothing, Ret: ", len(b))
-	return b
+	if p != nil {
+		defer C.free(unsafe.Pointer(p))
+		return C.GoBytes(unsafe.Pointer(p), featLen)
+	}
+	s.printLog("->face--> Extract Nothing")
+	return nil
 }
 
 // Compare face compare
@@ -173,15 +185,15 @@
 }
 
 // Propertize prop
-func (s *SDKFace) Propertize(fpos sdkstruct.CFacePos, data []byte, w, h, c int, ch int) *sdkstruct.CThftResult {
+func (s *SDKFace) Propertize(fpos sdkstruct.CFacePos, data []byte, w, h, c int, ch int) sdkstruct.CThftResult {
 	if !s.propertizer {
-		return nil
+		return sdkstruct.CThftResult{Age: 0}
 	}
 
 	pos := (*C.cFacePos)(unsafe.Pointer(&fpos))
 	result := C.c_api_face_property(pos, (*C.uchar)(unsafe.Pointer(&data[0])), C.int(w), C.int(h), C.int(ch))
 	s.printLog("->face--> Propertize")
-	return (*sdkstruct.CThftResult)(unsafe.Pointer(&result))
+	return *(*sdkstruct.CThftResult)(unsafe.Pointer(&result))
 }
 
 // CFaceInfoArrayToGoArray convert cFaceInfo array to go

--
Gitblit v1.8.0