| | |
| | | void *create_fake_image(const int size){ |
| | | unsigned char *img = (unsigned char*)malloc(size); |
| | | printf("batch~~~~~~ fake image len: %d\n", size); |
| | | memset(img, 255, size); |
| | | memset(img, 0, size); |
| | | return img; |
| | | } |
| | | |
| | |
| | | } |
| | | defer C.free(cImgs) |
| | | |
| | | var freeFakeImage []unsafe.Pointer |
| | | // var freeFakeImage []unsafe.Pointer |
| | | // defer func(f []unsafe.Pointer) { |
| | | // for _, v := range f { |
| | | // C.free(v) |
| | | // } |
| | | // }(freeFakeImage) |
| | | |
| | | var fakeImage *ImageHumanTracker |
| | | for k, v := range imgs { |
| | | 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), fake, C.int(wid), C.int(hei), C.int(chn)) |
| | | |
| | | v = fakeImage |
| | | logo.Infoln("batch~~~~~~ fake 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)) |
| | | |
| | | } else { |
| | | if fakeImage == nil && v != nil { |
| | | fakeImage = v |
| | | } |
| | | 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) |
| | | |
| | | cRet := C.process(h.handle, cImgs, C.int(h.batchSize), h.result) |
| | | if cRet != 0 { |