18 case1 = pts[:, 0, 0] > bbox[0]
19 case2 = pts[:, 0, 1] > bbox[1]
20 case3 = pts[:, 0, 0] < bbox[2]
21 case4 = pts[:, 0, 1] < bbox[3]
22 valid = case1 & case2 & case3 & case4
29 self.
cur_pts = np.zeros((0, 1, 2), dtype=float)
36 n2p_pts, status_n2p, err = cv2.calcOpticalFlowPyrLK(image_gray, self.
prev_image, p2n_pts,
None, criteria=self.
termcriteria)
38 valid1 = (status_p2n==1) & (status_n2p==1)
41 dist = (dpt[:, :, 0] + dpt[:, :, 1])
43 valid = valid1 & valid2
45 self.
p2n_pts = p2n_pts[valid].reshape(-1,1,2)
59 return bbox, valid_check
67 px1 = pPt[:, 0, 0].min()
68 py1 = pPt[:, 0, 1].min()
69 px2 = pPt[:, 0, 0].max()
70 py2 = pPt[:, 0, 1].max()
76 nx1 = nPt[:, 0, 0].min()
77 ny1 = nPt[:, 0, 1].min()
78 nx2 = nPt[:, 0, 0].max()
79 ny2 = nPt[:, 0, 1].max()
82 predict_box = np.array([nx1 + pmx1, ny1 + pmy1, nx2 + pmx2, ny2 + pmy2], dtype=float)
84 predict_box = np.array([bbox[0], bbox[1], bbox[2], bbox[3]], dtype=float)
86 return predict_box, valid_check
90 score_w = (min(measurement[-1], 0.8) - 0.1) / 0.7
91 p_w = (1-score_w) + self.
w
92 m_w = score_w + (1-self.
w)
100 return p_w*bbox + m_w*measurement[:4]