# calculate optical flow between several consecutive frames

Hi

How can I calculate optical flow between several consecutive frames (e.g., every 10 frames), ? and then optical flow computed from each image is transformed into a “flow image" that contains the horizontal and vertical components: x flow values, y flow values, as well as the flow magnitude. I'm using below code to compute the optical flow for two images , but I don't know how to do:

1. If I have a folder conatins for example 500 video frames as images , how to calculate optical flow between several consecutive frames (e.g., every 10 frames) ?

2. optical flow computed from each image is transformed into a “flow image" that contains the horizontal and vertical components: x flow values, y flow values, as well as the flow magnitude

 import cv2
import numpy as np
import matplotlib.pyplot as plt

prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
next1 = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)

flow = cv2.calcOpticalFlowFarneback(prvs, next1, None,0.5, 3, 15, 3, 5, 1.2, 0)

horz = cv2.normalize(flow[...,0], None, 0, 255, cv2.NORM_MINMAX)
vert = cv2.normalize(flow[...,1], None, 0, 255, cv2.NORM_MINMAX)
horz = horz.astype('uint8')
vert = vert.astype('uint8')

plt.subplot(1, 4, 1)
plt.title('Frame 1')
plt.imshow(frame1)
plt.subplot(1, 4, 2)
plt.title('Frame 2')
plt.imshow(frame2)
plt.subplot(1, 4, 3)
plt.title('Horz')
plt.imshow(horz)
plt.subplot(1,4,4)
plt.title('Vert')
plt.imshow(vert)
`
edit retag close merge delete