| | |
| | | |
| | | // ReID id |
| | | type ReID struct { |
| | | handle unsafe.Pointer |
| | | handle unsafe.Pointer |
| | | } |
| | | |
| | | // NewSDK new reid |
| | | func NewSDK(gpu int, module string) *ReID { |
| | | cmodule := C.CString(module) |
| | | defer C.free(unsafe.Pointer(cmodule)) |
| | | h := C.create_reid(C.int(gpu), cmodule) |
| | | return &ReID{h} |
| | | cmodule := C.CString(module) |
| | | defer C.free(unsafe.Pointer(cmodule)) |
| | | h := C.create_reid(C.int(gpu), cmodule) |
| | | return &ReID{h} |
| | | } |
| | | |
| | | // Free free |
| | |
| | | // Extract extract |
| | | // func (r *ReID) Extract(img []byte) []float32 { |
| | | |
| | | // var fSize C.int |
| | | // cfeat := C.extract(r.handle, (*C.uchar)(unsafe.Pointer(&img[0])), &fSize) |
| | | // if cfeat == nil { |
| | | // return nil |
| | | // } |
| | | // var fSize C.int |
| | | // cfeat := C.extract(r.handle, (*C.uchar)(unsafe.Pointer(&img[0])), &fSize) |
| | | // if cfeat == nil { |
| | | // return nil |
| | | // } |
| | | |
| | | // ret := make([]float32, 0, fSize) |
| | | // for i := 0; i < int(fSize); i++ { |
| | | // r := C.get_val(cfeat, C.int(i)) |
| | | // ret = append(ret, float32(r)) |
| | | // } |
| | | // C.free(unsafe.Pointer(cfeat)) |
| | | // return ret |
| | | // ret := make([]float32, 0, fSize) |
| | | // for i := 0; i < int(fSize); i++ { |
| | | // r := C.get_val(cfeat, C.int(i)) |
| | | // ret = append(ret, float32(r)) |
| | | // } |
| | | // C.free(unsafe.Pointer(cfeat)) |
| | | // return ret |
| | | // } |
| | | |
| | | // Extract2 extract |
| | | func (r *ReID) Extract2(img unsafe.Pointer, w, h, c int) []float32 { |
| | | |
| | | var fSize C.int |
| | | cfeat := C.extract(r.handle, (*C.uchar)(img), C.int(w), C.int(h), C.int(c), &fSize) |
| | | if cfeat == nil { |
| | | return nil |
| | | } |
| | | var fSize C.int |
| | | cfeat := C.extract(r.handle, (*C.uchar)(img), C.int(w), C.int(h), C.int(c), &fSize) |
| | | if cfeat == nil { |
| | | return nil |
| | | } |
| | | |
| | | ret := make([]float32, 0, fSize) |
| | | for i := 0; i < int(fSize); i++ { |
| | | r := C.get_val(cfeat, C.int(i)) |
| | | ret = append(ret, float32(r)) |
| | | } |
| | | C.free(unsafe.Pointer(cfeat)) |
| | | return ret |
| | | ret := make([]float32, 0, fSize) |
| | | for i := 0; i < int(fSize); i++ { |
| | | r := C.get_val(cfeat, C.int(i)) |
| | | ret = append(ret, float32(r)) |
| | | } |
| | | C.free(unsafe.Pointer(cfeat)) |
| | | return ret |
| | | } |
| | | |
| | | // Compare compare |
| | | func (r *ReID) Compare(feat1, feat2 []float32) float32 { |
| | | |
| | | p := C.compare(r.handle, (*C.float)(unsafe.Pointer(&feat1)), (*C.float)(unsafe.Pointer(&feat2))) |
| | | return float32(p) |
| | | p := C.compare(r.handle, (*C.float)(unsafe.Pointer(&feat1)), (*C.float)(unsafe.Pointer(&feat2))) |
| | | return float32(p) |
| | | } |