From 33a6b067fd5af5f3afc3576243103968fd1bac20 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 19 十二月 2019 13:59:23 +0800
Subject: [PATCH] dupate

---
 gohumantrack/gohumantrack.go |   39 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 38 insertions(+), 1 deletions(-)

diff --git a/gohumantrack/gohumantrack.go b/gohumantrack/gohumantrack.go
index ffed316..8224dda 100644
--- a/gohumantrack/gohumantrack.go
+++ b/gohumantrack/gohumantrack.go
@@ -98,7 +98,7 @@
 // HumanTracker struct
 type HumanTracker struct {
 	handle    unsafe.Pointer
-	result 	  unsafe.Pointer
+	result    unsafe.Pointer
 	batchSize int
 }
 
@@ -169,6 +169,43 @@
 	return result, nil
 }
 
+// ProcessImagePointer process
+func (h *HumanTracker) ProcessImagePointer(imgs []*ImageHumanTracker) ([]FgResult, error) {
+	if len(imgs) != h.batchSize {
+		return nil, errors.New("input images count doesn't equalize to batchsize")
+	}
+	cImgs := C.create_batch_image(C.int(h.batchSize))
+	if cImgs == nil {
+		return nil, errors.New("create C images error")
+	}
+	defer C.free(cImgs)
+	for k, v := range imgs {
+		var ret C.int
+		if v == nil {
+			ret = C.fill_images(cImgs, C.int(h.batchSize), C.int(k), nil, 0, 0, 0)
+		} else {
+			ret = C.fill_images(cImgs, C.int(h.batchSize), C.int(k), unsafe.Pointer(&v.Data[0]), C.int(v.Width), C.int(v.Height), C.int(v.Channel))
+		}
+		if int(ret) != k {
+			return nil, errors.New("fill C images error")
+		}
+	}
+
+	cRet := C.process(h.handle, cImgs, C.int(h.batchSize), h.result)
+	if cRet == nil {
+		return nil, errors.New("create C results error")
+	}
+
+	var result []FgResult
+	p := uintptr(cRet)
+	for i := 0; i < h.batchSize; i++ {
+		j := *(*FgResult)(unsafe.Pointer(p))
+		result = append(result, j)
+		p += unsafe.Sizeof(j)
+	}
+	return result, nil
+}
+
 // FFSimilarity similarity
 func FFSimilarity(feaA, feaB [128]float32) float64 {
 	var norm1, norm2 float64

--
Gitblit v1.8.0