From 97dde5e30a7d0400cee08d4fa8bf6fd5e760ab9a Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 19 十二月 2019 16:36:25 +0800 Subject: [PATCH] update --- gohumantrack/gohumantrack.go | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/gohumantrack/gohumantrack.go b/gohumantrack/gohumantrack.go index 3f9f4f7..d09664b 100644 --- a/gohumantrack/gohumantrack.go +++ b/gohumantrack/gohumantrack.go @@ -109,7 +109,6 @@ handle unsafe.Pointer result unsafe.Pointer batchSize int - fakeImage unsafe.Pointer } // NewHumanTracker new @@ -120,7 +119,7 @@ p := C.c_human_tracker_create(C.int(gpu), C.int(batchSize), C.int(flag)) if p != nil { res := C.init_fgres(C.int(batchSize)) - return &HumanTracker{p, res, batchSize, nil} + return &HumanTracker{p, res, batchSize} } return nil } @@ -132,9 +131,6 @@ } if h.result != nil { C.free(h.result) - } - if h.fakeImage != nil { - C.free(h.fakeImage) } } @@ -192,17 +188,24 @@ return nil, errors.New("create C images error") } defer C.free(cImgs) + + var freeFakeImage []unsafe.Pointer + for k, v := range imgs { logo.Infoln("batch~~~~~~", k, " image: ", v) if v == nil { - if h.fakeImage == nil { - h.fakeImage = C.create_fake_image(C.int(wid * hei * chn)) - } - C.fill_images(cImgs, C.int(h.batchSize), C.int(k), h.fakeImage, C.int(wid), C.int(hei), C.int(chn)) + fake := C.create_fake_image(C.int(wid * hei * chn)) + freeFakeImage = append(freeFakeImage, fake) + C.fill_images(cImgs, C.int(h.batchSize), C.int(k), fake, C.int(wid), C.int(hei), C.int(chn)) } else { 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)) } } + defer func(f []unsafe.Pointer) { + for _, v := range f { + C.free(v) + } + }(freeFakeImage) cRet := C.process(h.handle, cImgs, C.int(h.batchSize), h.result) if cRet != 0 { -- Gitblit v1.8.0