reid from https://github.com/michuanhaohao/reid-strong-baseline
zhangmeng
2020-02-25 0786441ed1828c411a16d6648baee753a02a3ddb
goreid.go
@@ -20,15 +20,15 @@
// 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
@@ -38,42 +38,42 @@
// 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)
}