def save_rois(self, frame, rois): self._multi_tracker = cv2.MultiTracker_create() self._track_marks = [] for bounding_box in rois[:2]: self._track_marks.append(bounding_box) roi_fragment = bounding_box.clip_to_fit(frame.shape).sample_from_image(frame) histogram = cv2.calcHist(roi_fragment, [0], None, [100], [0, 255]) self._initial_roi_histograms.append(histogram) self._multi_tracker.add(self._create_tracker_fun(), frame, bounding_box.parameters) if len(self._track_marks) >= 2: self._base_angle = Point.point_angle( self._track_marks[0].corners[0], self._track_marks[1].corners[0] )
def to_angle(self, upper, lower): new_angle = Point.point_angle(upper.corners[0], lower.corners[0]) result = new_angle - self._base_angle if result < -180: result = 360 + result return result