| | |
| | | } |
| | | |
| | | // ProcessImagePointer process |
| | | func (h *HumanTracker) ProcessImagePointer(imgs []*ImageHumanTracker) ([]FgResult, error) { |
| | | func (h *HumanTracker) ProcessImagePointer(imgs []*ImageHumanTracker, w, h, c int) ([]FgResult, error) { |
| | | if len(imgs) != h.batchSize { |
| | | return nil, errors.New("input images count doesn't equalize to batchsize") |
| | | } |
| | |
| | | for k, v := range imgs { |
| | | logo.Infoln("batch~~~~~~", k, " image: ", v) |
| | | if v == nil { |
| | | C.fill_images(cImgs, C.int(h.batchSize), C.int(k), nil, 0, 0, 0) |
| | | fake := make([]byte, w*h*c) |
| | | C.fill_images(cImgs, C.int(h.batchSize), C.int(k), unsafe.Pointer(&fake[0]), C.int(w), C.int(h), C.int(c)) |
| | | } else { |
| | | 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)) |
| | | } |
| | |
| | | fx, fy := 1.0, 1.0 |
| | | if imgW != rw || imgH != rh { |
| | | imgData = goconv.ResizeBGR(i.Data, imgW, imgH, rw, rh) |
| | | fx = (float64)(rw)/(float64)(imgW) |
| | | fy = (float64)(rh)/(float64)(imgH) |
| | | fx = (float64)(rw) / (float64)(imgW) |
| | | fy = (float64)(rh) / (float64)(imgH) |
| | | } |
| | | img := gohumantrack.ImageHumanTracker{ |
| | | Data: imgData, |
| | |
| | | } |
| | | } |
| | | |
| | | res, err := t.tracker.ProcessImagePointer(pimg) |
| | | res, err := t.tracker.ProcessImagePointer(pimg, rw, rh, 3) |
| | | t.recvImageCount = 0 |
| | | |
| | | if err != nil { |
| | |
| | | for i := 0; i < int(obj.FgNum); i++ { |
| | | r := obj.Fginfo[i] |
| | | rect := protomsg.Rect{ |
| | | Left: (int32)((float64)(r.Left)/fx), |
| | | Right: (int32)((float64)(r.Right)/fy), |
| | | Top: (int32)((float64)(r.Top)/fx), |
| | | Bottom: (int32)((float64)(r.Bottom)/fy), |
| | | Left: (int32)((float64)(r.Left) / fx), |
| | | Right: (int32)((float64)(r.Right) / fy), |
| | | Top: (int32)((float64)(r.Top) / fx), |
| | | Bottom: (int32)((float64)(r.Bottom) / fy), |
| | | } |
| | | pr := &protomsg.HumanTrack{ |
| | | RcHuman: &rect, |
| | | Confidence: r.Confidence, |
| | | X: (int32)((float64)(r.X)/fx), |
| | | Y: (int32)((float64)(r.Y)/fy), |
| | | X: (int32)((float64)(r.X) / fx), |
| | | Y: (int32)((float64)(r.Y) / fy), |
| | | Id: r.ID, |
| | | Feature: r.Feature[:], |
| | | } |