zhangmeng
2019-12-20 8ec46c79655e7d9d4c729adb5f192c19fbdbb338
update
1个文件已修改
29 ■■■■■ 已修改文件
gohumantrack/gohumantrack.go 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gohumantrack/gohumantrack.go
@@ -26,7 +26,7 @@
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;
}
@@ -190,23 +190,32 @@
    }
    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 {