def compute_farneback_optical_flow()

in video_processing/modules/optical_flow.py [0:0]


def compute_farneback_optical_flow(frames):
    prev_gray = cv2.cvtColor(np.array(frames[0]), cv2.COLOR_BGR2GRAY)
    flow_maps = []
    magnitudes = []
    angles = []
    images = []
    hsv = np.zeros_like(frames[0])
    hsv[..., 1] = 255

    for frame in frames[1:]:
        gray = cv2.cvtColor(np.array(frame), cv2.COLOR_BGR2GRAY)
        flow_map = cv2.calcOpticalFlowFarneback(
            prev_gray,
            gray,
            flow=None,
            pyr_scale=0.5,
            levels=3,
            winsize=15,
            iterations=3,
            poly_n=5,
            poly_sigma=1.2,
            flags=0,
        )
        magnitude, angle = cv2.cartToPolar(flow_map[..., 0], flow_map[..., 1])
        hsv[..., 0] = angle * 180 / np.pi / 2
        hsv[..., 2] = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX)
        bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
        flow_maps.append(flow_map)
        magnitudes.append(magnitude)
        angles.append(angle)
        images.append(bgr)
        prev_gray = gray
    return flow_maps, magnitudes, angles, images