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