Untitled

 avatar
unknown
plain_text
a year ago
882 B
5
Indexable
class OpticalFlow():
    def __init__(self, s_opt=320):
        self.prev = None
        self.s_opt = s_opt
    

    def resize_bbox(self, box, d_size):
        x1, y1, x2, y2 = box
        x_scale = self.s_opt / d_size[1]
        y_scale = self.s_opt / d_size[0]
        x1 = int(np.round(x1 * x_scale))
        y1 = int(np.round(y1 * y_scale))
        x2 = int(np.round(x2 * x_scale))
        y2 = int(np.round(y2 * y_scale))
        return x1, y1, x2, y2 
        
    def get(self, frame):

        frame = cv2.resize(frame, (self.s_opt, self.s_opt))
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        
        if self.prev is None:
            self.prev = frame

        flow = cv2.calcOpticalFlowFarneback(self.prev, frame, None, 0.5, 3, 15, 3, 5, 1.2, 0)
        self.prev = frame
        mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
        return mag
Editor is loading...
Leave a Comment