zhangmeng
2019-12-19 c453d1daa65744d8f63e57b48b4c369241cf6f25
gohumantrack/gohumantrack.go
@@ -31,6 +31,7 @@
}
int fill_images(void *imgs, const int size, const int index, void *data, const int w, const int h, const int c){
   if (!data) data = (unsigned char*)malloc(w*h*c);
   c_img *images = (c_img*)imgs;
   images[index].data_ = (unsigned char*)data;
   images[index].w_ = w;
@@ -190,24 +191,23 @@
   }
   defer C.free(cImgs)
   var freeFakeImage []unsafe.Pointer
   // var freeFakeImage []unsafe.Pointer
   for k, v := range imgs {
      logo.Infoln("batch~~~~~~", k, " image: ", v, " size: ", wid, "x", hei, "x", chn)
      if v == nil {
         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))
         // 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), nil, C.int(wid), C.int(hei), C.int(chn))
      } else {
         logo.Infoln("batch~~~~~~ real image len: ", len(v.Data), " size: ", v.Width, "x", v.Height, "x", v.Channel)
         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)
   // 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 {