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